Django:文本搜索:Haystack vs postgres全文搜索

Django:文本搜索:Haystack vs postgres全文搜索,django,postgresql,full-text-search,django-haystack,Django,Postgresql,Full Text Search,Django Haystack,我正在使用Django 2.0 我有标题和描述的帖子。这是我第一次尝试实现搜索功能 我在搜索以下选项后发现: Haystack和postgres全文搜索() 这是建议使用的工具。我可以建议将PostgreSQL全文搜索与Django一起使用 官方文件很好 如果你想了解我的建议的更多信息和动机,你可以阅读我写的一篇关于这个主题的文章:FYI SearchVector/SearchQuery方法实际上并不能涵盖所有情况,例如部分单词(请参阅以获取参考)。根据您的约束条件,您可以轻松地实现自己的。 例

我正在使用Django 2.0

我有标题和描述的帖子。这是我第一次尝试实现搜索功能

我在搜索以下选项后发现:

Haystack和postgres全文搜索()


这是建议使用的工具。

我可以建议将PostgreSQL全文搜索与Django一起使用

官方文件很好


如果你想了解我的建议的更多信息和动机,你可以阅读我写的一篇关于这个主题的文章:

FYI SearchVector/SearchQuery方法实际上并不能涵盖所有情况,例如部分单词(请参阅以获取参考)。根据您的约束条件,您可以轻松地实现自己的。 例如,在ViewSet的get_queryset方法中:

    ...other params...

            search_terms = self.request.GET.get('q')
            if search_terms:
                # remove possible other delimiters and other chars
                # that could interfere
                cleaned_terms = re.sub(r'[!\'()|&;,]', ' ', search_terms).strip()
                if cleaned_terms:
                    # Check against all the params we want
                    # apply to previous terms' filtered results
                    q = reduce(
                        lambda p, n: p & n,
                        map(
                            lambda word:
                                Q(your_property__icontains=word) | Q(
                                    second_property__icontains=word) | Q(
                                    third_property__icontains=word)
                            cleaned_terms.split()
                        )
                    )
                    qs = YourModel.objects.filter(q)
           return qs

投票结束这个问题作为这个问题的答案将几乎完全基于观点,而不是事实、参考资料或具体的专业知识