2012-03-22 4 views
6

分散インデックスを持つほぼリアルタイムの検索アプリケーションを作成しようとしています。今、私は複数のインデックスを検索を実装するための正しいapprochあるのだろうか。LuceneのMultiSearcherとMultiReaderを使用したIndexSearcher

私は1 approchは次のようになり、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)); 

これらの2つのアタックには大きな違いはありますか?すべてのIndexReaderを反復処理する代わりにMultiReader.reopen()を呼び出して再オープンし、新しいIndexSearchersを作成するだけで、2番目のメソッドは簡単に処理できます。

答えて

関連する問題