2
在Lucene中,我想知道倒排索引中的访问次数。Lucene倒排索引访问计数
也许,Lucene的有倒排索引这样,
猫狗
-----
D01 D02
D02 D01
D03 D03
---- - -----
如果我使用查询“cat dog”,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;
谢谢。
谢谢。我认为Lucene会按照分数保留倒排索引排序。因此,在这个例子中,“前两名”是“两个最高分”。你的意思是说Lucene总是访问(p log k)时间?我认为如果Lucene已经倒过来索引,Lucene会在第四次访问后停止访问。我错了吗? – prory 2012-02-03 07:50:20
@prory:文档按照每个学期的ID排序,而不是按分数排序。这是比按分数排序更快的方式,但这里解释太长。我只能说:阅读链接的博客文章和附件。举一个例子,如果d01和d02中的唯一字是“猫”和“狗”,则Lucene将在第四次访问后停止。但是说它总是只需要4个就太复杂了。 – Xodarap 2012-02-03 15:11:54