Django:文本搜索:Haystack vs postgres全文搜索
我正在使用Django 2.0 我有标题和描述的帖子。这是我第一次尝试实现搜索功能 我在搜索以下选项后发现: Haystack和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方法实际上并不能涵盖所有情况,例如部分单词(请参阅以获取参考)。根据您的约束条件,您可以轻松地实现自己的。 例
这是建议使用的工具。我可以建议将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
投票结束这个问题作为这个问题的答案将几乎完全基于观点,而不是事实、参考资料或具体的专业知识