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