2

在 Lucene 中,我想知道倒排索引中的访问次数。

也许,Lucene 有这样的倒排索引,

猫狗
----- -----
d01 d02
d02 d01
d03 d03
----- -----

如果我使用查询“猫狗”,Lucene 将连续访问倒排索引。然后我问 top-2 结果,只有 4 次访问 Lucene 将返回 d01、d02。在这种情况下,我想知道访问时间(在本例中为“4”)。

目前,我像这样使用Lucene。

Query q = new QueryParser(Version.LUCENE_35, "title", analyzer).parse(querystr);
int hitsPerPage = 10;
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

谢谢你。

4

1 回答 1

0

渐近地,如果有p匹配项并且您正在找到 top k,那么时间将是p log k。所以在你的情况下,6 log 2 = 6. (当然,对于这么小的数字,这个公式给出了荒谬的结果)。

有关更多信息,请参阅内容。

请注意,“前两名”并不是指“前两名”,而是“得分最高的两名”。根据您示例中的权重,Lucene 可能会忽略 d03。

于 2012-02-02T22:21:49.393 回答