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番目のメソッドは簡単に処理できます。
ありがとう! 会社の方針のために私はlucene 2.9を使用していますので、MultiSearcherは@Depricatedであることを認識していません。 – woezelmann