Django haystack fq(solr) 是如何填充的

发布于 2024-12-02 16:18:53 字数 386 浏览 1 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若言繁花未落 2024-12-09 16:18:53

你可能想在这里查看
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)

一腔孤↑勇 2024-12-09 16:18:53

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

Haystack itself uses the fq parameter to return only hits that have a certain Django ContentType (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 the fq 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, use narrow() on the SearchQuerySet:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文