【问题标题】:Django haystack how is fq(solr) populatedDjango haystack 如何填充 fq(solr)
【发布时间】:2011-09-03 11:37:44
【问题描述】:

我使用 solr 作为 django-haystack 的搜索后端。查看日志时,我可以看到对 solr 的查询填充了“fq”。

INFO: [] webapp=/solr path=/select/ params={fl=*+score&start=0&q=yyy&wt=json&fq=django_ab:(xxx)&rows=10} hits=5 status=0 QTime=0

我的疑问是“fq”参数是如何被 haystack 填充的。我正在使用 SearchQuerySet.filter 在 solr 文档中添加搜索。 我注意到的另一件事是,无论搜索查询是什么,fq 都保持不变。 fq 是否与模型被索引的 django 应用程序相关?我是否应该担心它是一个常数。

【问题讨论】:

    标签: django django-haystack


    【解决方案1】:

    您可能想在这里查看 https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/solr_backend.py

    如果narrow_queries 不是None: kwargs['fq'] = list(narrow_queries)

    【讨论】:

      【解决方案2】:

      Haystack 本身使用 fq 参数仅返回具有特定 Django ContentType(实际上是特定模型类)的命中。

      关于SOLR的fq

      查询中允许多次使用此参数。某个fq 参数的命中结果子集被缓存。因此,将fq 用于经常检索的子集(例如,在您网站的菜单中使用的类别搜索)是有意义的。

      要通过 Haystack 使用 fq 参数,请在 SearchQuerySet 上使用 narrow()

      http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html?highlight=narrow#SearchQuerySet.narrow

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        相关资源
        最近更新 更多