Django haystack fq(solr) 是如何填充的
我使用 solr 作为 django-haystack 的搜索后端。查看日志时,我可以看到对 solr 的查询已填充“fq”。
信息:[] webapp=/solr path=/select/params={fl=*+score&start=0&q=yyy&wt=json&fq=django_ab:(xxx)&rows=10} hit=5 status=0 QTime=0
我的疑问是“fq”参数是如何由haystack填充的。我正在使用 SearchQuerySet.filter 在 solr 文档中添加搜索。 我注意到的另一件事是,无论搜索查询是什么,fq 都保持不变。 fq 与模型被索引的 django 应用程序相关吗?我应该担心它是一个常数吗?
I am using solr as search backend with django-haystack. When viewing the logs I can see that query to solr is having "fq" populated.
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
My doubt is how this how is "fq" parameter i populated by haystack. I am using SearchQuerySet.filter to add search in solr documents.
Another thing I noticed is no matter what the search query is fq remains same. Is fq related to the django application whose model is indexed? Should I be worrying about having it a constant.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你可能想在这里查看
https://github.com/toastdriven/django-haystack /blob/master/haystack/backends/solr_backend.py
如果narrow_queries不是None:
kwargs['fq'] = 列表(narrow_queries)
you may want to check here
https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/solr_backend.py
if narrow_queries is not None:
kwargs['fq'] = list(narrow_queries)
Haystack 本身使用
fq
参数仅返回具有特定 DjangoContentType
(实际上是特定 Model 类)的命中。关于SOLR的
fq
:该参数在查询中允许多次使用。某个
fq
参数的结果子集被缓存。因此,对于经常检索的子集(例如,在站点菜单中使用的类别搜索)使用fq
是有意义的。要通过 Haystack 使用
fq
参数,请在 SearchQuerySet 上使用narrow()
:http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html?highlight=narrow#SearchQuerySet.narrow
Haystack itself uses the
fq
parameter to return only hits that have a certain DjangoContentType
(in effect a certain Model class).About SOLR's
fq
:This parameter is allowed multiple times in queries. The resulting subset of hits of a certain
fq
parameter is cached. Thus, it makes sense to use thefq
for subsets that are often retrieved (like category searches for example, that are used in menus on your site).To make use of the
fq
parameter via Haystack, usenarrow()
on the SearchQuerySet:http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html?highlight=narrow#SearchQuerySet.narrow