6
我正準備用分佈式索引編寫一個接近實時的搜索應用程序。現在,我不知道什麼是實現了多個索引搜索正確的計算策略:Lucene的MultiSearcher與IndexRearcher與MultiReader
我已閱讀有關MultiSearcher,這樣一個計算策略是:
IndexSearcher[] indexSearchers = new IndexSearcher[indexCount];
for (int i = 0; i < indexCount; i++) {
File directory = new File(indexdir, String.valueOf(i));
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(directory), analyzer, IndexWriter.MaxFieldLength.LIMITED);
IndexReader indexReader = indexWriter.getReader();
indexSearchers[i] = new IndexSearcher(indexReader);
}
MultiSearcher searcher = new MultiSearcher(indexSearchers);
但正如我看這也是可能的:
IndexReader[] indexReader = new IndexReader[indexCount];
for (int i = 0; i < indexCount; i++) {
File directory = new File(indexdir, String.valueOf(i));
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(directory), analyzer, IndexWriter.MaxFieldLength.LIMITED);
indexReader[i] = indexWriter.getReader();
}
IndexSearcher searcher = new IndexSearcher(new MultiReader(indexReader));
這兩種方法有什麼不同嗎?如果讀者沒有數據,第二個將被easyer處理,因爲我可以調用MultiReader.reopen()而不是遍歷所有IndexReader,重新打開它們並創建新的IndexSearchers ...
謝謝! 由於公司政策我使用的是lucene 2.9,所以我沒有意識到MultiSearcher是@Depricated。 – woezelmann 2012-03-22 13:49:49