私が取り組んでいるプロジェクトの場合、約1,000万のドキュメントのインデックスがあります。100kから5mの範囲のドキュメントのセットの場合、定期的にフィールドを追加する必要があります。
Lucene 4は、ドキュメントの更新をサポートしています(基本的に削除と追加)。より多くのドキュメントセットにフィールドを追加するための良いアプローチは何でしょうか?
これまでに試したのは、を使用して、SearcherManagerをラップしIndexWriter、フィールドがまだ含まれていないが、Query興味のあるドキュメントと一致するドキュメントを、これらをラップすることで小さな検索を行うことですBooleanQuery。次に、を繰り返しScoreDocs、ドキュメントを取得し、新しいフィールドを追加して、各ドキュメントに保存されているIをwriter.updateDocument使用して呼び出します。uuid次に、を呼び出しcommitてmaybeRefreshBlocking、を再取得してIndexSearcher、もう一度検索します。これはちょっと遅く、素朴なアプローチのようです。