lucene在搜索时是否遍历整个倒排索引?

时间:2016-03-03 16:25:30

标签: lucene search-engine

在网络搜索引擎中,反向索引通常非常大,因此搜索引擎会在获得足够的结果时退出搜索。由于遍历长反向索引的尾部非常耗时。

Lucene如何处理此案?

例如,如果一个倒置的术语“A'搜索“A' A'对于10个结果,Lucene会通过所有这10000个文档然后返回10个结果,或者当检索到足够的结果时返回10个结果,即使它没有达到倒排索引的末尾吗?

1 个答案:

答案 0 :(得分:1)

Lucene确实会访问所有10k的比赛,计算每场比赛的得分,然后放入一堆以计算前k个命中。

lucene / misc模块有一个SortingMergePolicy,它允许您根据某个字段对合并的段进行排序(在Web索引上,例如,这可能是页面排名)。这样,如果要在搜索时根据此字段对文档进行排序(或者更常见的是,如果排序顺序与此字段的值强烈相关),则可以在收集到足够匹配后立即停止收集每个段的文档。

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