lucene在查找的时候会遍历整个倒排索引吗?

Does lucene traverse the whole inverted index when searching?

在网络搜索引擎中,倒排索引通常非常大,当搜索结果足够时,搜索引擎就会停止搜索。由于遍历到长倒排索引的尾部很耗时

Lucene如何处理这种情况?

例如term'A'的倒排索引由10000个文档组成,当搜索'A'10个结果时,Lucene是否会遍历这10000个文档,那么return10 results, or return 10 results when retrieve enough results 即使它没有到达倒排索引的末尾?

Lucene 确实会访问所有 10k 个匹配项,计算每个匹配项的分数,然后放入堆中以计算前 k 个匹配项。

lucene/misc 模块有一个 SortingMergePolicy,它允许您根据特定字段对合并的段进行排序(在 Web 索引上,例如,这可能是页面排名)。这样,如果您想在搜索时根据此字段对文档进行排序(或者更一般地说,如果排序顺序与此字段的值密切相关),您可以在收集到足够的匹配项后立即停止按段收集文档。

目前这是一项非常专业的功能,但我们计划使其更易于使用,请参阅 https://issues.apache.org/jira/browse/LUCENE-6766