Solr/Lucene:常规查询和过滤查询有什么区别

发布于 2024-12-01 19:33:01 字数 300 浏览 0 评论 0原文

我目前正在实现一个 Solr 解决方案,用户可以选择各种选项来搜索产品。我现在可以采用所有这些选项并将它们组合到一个长查询中,或者我可以使用一个查询来获取所有内容 (*:*) 并向其应用查询过滤器。

常规查询:

q=color:blue AND price:500

使用过滤查询的查询:

q=*:*&fq=color:blue&fq=price:500

结果是完全一样的。那么有什么区别呢?我什么时候应该使用其中之一?

I'm currently implementing a Solr solution where a user is able to select various options to search for a product. I can now take all those options and put them together into one single long query, or I can use a query that fetches everything (*:*) and applies query filters to it.

Regular query:

q=color:blue AND price:500

Query using filter queries:

q=*:*&fq=color:blue&fq=price:500

The result is exactly the same. So what is the difference? When should I use one or the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

为你拒绝所有暧昧 2024-12-08 19:33:01

过滤查询不会影响文档的分数。
此外,它们在缓存中很有用,用 fq 指定的查询独立于主查询进行缓存
solr 查询参数文档

Filter queries do not influence scores of the document.
Further they are useful in Caching, the queries specified with fq are cached independently from the main query
Document for solr query parameters

A君 2024-12-08 19:33:01

通常,在任何生产系统中,您都会使用 Dismax 请求处理程序的变体,它不支持以前的语法,因此在这种情况下必须使用过滤器查询来执行过滤。

Typically in any production system you would use a variant of the Dismax request handler which doesn't support the former syntax, hence filtering must be performed using filter queries in that case.

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