SOLR:查询和过滤查询的需求是什么?

时间:2015-09-29 19:22:11

标签: solr

使用布尔表达式,单独的查询参数q=...可以获取所需的数据。或者使用q=*:*,过滤器查询fq可以具有相同的参数并实现大部分相同的结果。

我一直使用q=*:*应用第二个解决方案,同时进行过滤查询" fq"对于所有人,知道有一些过滤器查询缓存正在进行。那么,为什么需要两者呢?总是使用fq查询正确的方法吗?

1 个答案:

答案 0 :(得分:3)

fq不会影响文档的分数 - 它用于过滤减少查询返回的文档数量,而不是更改给定查询的文档分数。 q是您期望用于查询的内容,其中将对每个文档的相关性进行评分。

除了过滤部分之外,你想要将它们分开的原因是过滤器查询的缓存可以单独存储,这意味着你可以缓存过滤器的结果,同时仍然保持实际查询变量。因此,如果您要过滤inStock的值,那么该过滤器可以生成一次并缓存,而实际查询可以更改。不必为每个查询重新计算“inStock”结果集中每个文档的“成员资格”,因为它不会影响评分 - 只需要执行与已从缓存中生成的文档列表的交集。

Common Query Parameters: fqCommon Query Parameters in the Community Wiki