SOLR:查询和过滤查询都需要什么?

use*_*524 1 solr

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

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

Mat*_*ndh 5

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

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

常用查询参数:社区 Wiki 中的fq和常用查询参数。