在我們的一個項目中,我們使用舊的Lucene版本(2.3.2)。我現在正在研究當前的Lucene版本(3.5.0)並嘗試重新編寫舊代碼。在舊項目中,我們擴展了TopFieldDocCollector以在collect()方法中執行一些額外的過濾。但是,我對理解新收集器類有點麻煩,但我找不到一個好例子。將Lucene HitCollector(2.x)遷移到收集器(3.x)
1)方法setScorer()。我如何/從哪裏獲得Scorer對象?
2)方法collect()。我想我需要創建自己的Collection並存儲我感興趣的docIds,對嗎?
3)如果不是擴展TopDocsCollector,我需要實現一個PriorityQueue在構造函數中使用,正確嗎?它似乎沒有標準的實施。但是我仍然需要自己的Collection來存儲docIds(或者說ScoreDocs),並且在搜索完成後調用populateResults?
總體而言,它似乎是延長收藏家是(很多)不是擴展TopDocsCollector更容易,但也許我失去了一些東西。
謝謝。很高興知道setScorer(),我不理解API文檔,並認爲我必須自己創建Scorer並將其傳入以獲取分數。 – 2012-03-26 14:45:10