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