Django haystack如何填充fq(solr)

时间:2011-09-03 11:37:44

标签: django django-haystack

我使用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应用程序有关吗?我应该担心它会不变吗。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

Haystack本身使用fq参数仅返回具有某个Django ContentType的命中(实际上是某个Model类)。

关于SOLR' fq

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

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

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