在Lucene,我想了解倒排索引中的访问次数。
也许,Lucene有这样的倒排索引,
猫狗 ----- -----如果我使用查询“猫狗”,Lucene将连续访问倒排索引。 我问前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;
谢谢。
答案 0 :(得分:0)
渐近地,如果有p
个匹配项,并且您找到了最高k
,则时间将为p log k
。所以在你的情况下,6 log 2 = 6
。 (当然,如此小的数字,这个公式给出了荒谬的结果)。
有关详细信息,请参阅this。
请注意,“前两名”并不代表“前两名”,而是“两名得分最高”。根据示例中的权重,Lucene可能会忽略d03。