2

我理解语义:首先我们执行查询,然后我们将过滤器应用为 DocIdSets(从缓存中获取它们)。

对于某些查询,它是非常低效的,例如,如果主查询是所有文档的复杂双函数(sqrt(流行度)+距离(...)),首先我会为所有索引评估这个函数,然后过滤它。 .

有没有办法在过滤的文档 ID 集上运行原始查询?

4

1 回答 1

1

首先我们执行查询,然后我们将过滤器应用为 DocIdSets(从缓存中获取它们)。

这不是真的,Solr 只计算所需的分数,这意味着如果任何过滤器与文档不匹配,则不会计算该文档的分数。

但是,它确实需要执行磁盘访问。为了防止这种情况,Solr 具有useFilterForSortedQuery选项,如果可用,它将首先在缓存中获取 DocSet,然后在内存中对其进行排序。我想这就是你要找的东西。

于 2012-08-22T09:32:40.533 回答