2009-08-07 28 views
2

我正在使用Lucene .NET 假設我只想從結果100開始返回50個結果,我該如何去做? 我搜索了文檔,但沒有找到任何東西。有什麼我失蹤?Lucene .NET結果子集

回答

1

我假設你這樣做是爲了尋呼。這通常在Lucene的執行(包括SOLR)是做的方式是通過簡單地執行查詢正常,但實際上只裝你有興趣在結果中存儲的數據。

在一個典型的尋呼情況下,這可能意味着多次執行相同的查詢,這可能看起來像是浪費資源,但在系統緩存的幫助下以及可能的Lucene緩存中並不那麼糟糕。好處是無國籍,它可以讓你擴大規模。

5

您的代碼應該是這個樣子:

TopDocs topDocs = indexSearcher.Search(query, null, 150); 
for(int i=100, i<min(topDocs.totalHits,150); i++) { 
    Document doc = indexSearcher.doc(topDocs.scoreDocs[i]); 

    // Do something with the doc 
} 

不要使用Hits類。效率低下,不推薦使用。