使用布尔表达式,单独的查询参数q=...
可以获取所需的数据。或者使用q=*:*
,过滤器查询fq可以具有相同的参数并实现大部分相同的结果。
我一直使用q=*:*
应用第二个解决方案,同时进行过滤查询" fq"对于所有人,知道有一些过滤器查询缓存正在进行。那么,为什么需要两者呢?总是使用fq查询正确的方法吗?
答案 0 :(得分:3)
fq
不会影响文档的分数 - 它用于过滤减少查询返回的文档数量,而不是更改给定查询的文档分数。 q
是您期望用于查询的内容,其中将对每个文档的相关性进行评分。
除了过滤部分之外,你想要将它们分开的原因是过滤器查询的缓存可以单独存储,这意味着你可以缓存过滤器的结果,同时仍然保持实际查询变量。因此,如果您要过滤inStock
的值,那么该过滤器可以生成一次并缓存,而实际查询可以更改。不必为每个查询重新计算“inStock”结果集中每个文档的“成员资格”,因为它不会影响评分 - 只需要执行与已从缓存中生成的文档列表的交集。
Common Query Parameters: fq和Common Query Parameters in the Community Wiki。