【问题标题】:Django: text search: Haystack vs postgres full text searchDjango:文本搜索:Haystack vs postgres 全文搜索
【发布时间】:2018-02-02 12:09:28
【问题描述】:

我正在使用 Django 2.0

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

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

Haystack 和 postgres 全文搜索 (https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/search/)

建议使用哪个。

【问题讨论】:

  • 投票结束这个问题,因为这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识

标签: django postgresql full-text-search django-haystack


【解决方案1】:

我可以建议在 Django 中使用 PostgreSQL 全文搜索。

官方文档很不错。

如果您想了解有关我的建议的更多信息和动机,可以阅读我写的关于此主题的文章:Full-Text Search in Django with PostgreSQL

【讨论】:

    【解决方案2】:

    仅供参考,SearchVector/SearchQuery 方法实际上并不能捕获所有情况,例如部分单词(请参阅https://www.fusionbox.com/blog/detail/partial-word-search-with-postgres-full-text-search-in-django/632/ 以供参考)。根据您的限制,您可以轻松实现自己的。 例如,在视图集的 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
    

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 1970-01-01
      • 2018-02-03
      • 2017-03-31
      • 2012-07-25
      • 1970-01-01
      • 2017-03-31
      • 2014-09-25
      • 2011-08-03
      相关资源
      最近更新 更多