lucene index onec を毎日更新しています。一般的な私の戦略は次のとおりです。
- 最後のインデックス生成以降に変更された DB 内のすべてのオブジェクトを検索します。
- これらのオブジェクトの新しい tmp-index を作成します。(古いインデックスはまだ利用可能です)
- IndexWriter.deleteDocuments(Term) を使用して、古いインデックスからすべての新しいインデックス付きドキュメント (tmp-index にあります) を削除します。
- IndexWriter.addIndexes(...) を使用して、古いインデックスと tmp-index をマージします。
私は lucene wiki でそれを見つけました: Lucene には直接の更新手順はありません... lucene 4.1.0 doc でそれも見つけました:ドキュメントは updateDocument で更新できます...
IndexWriter.updateDocument(Term, Document) を試しましたが、フィルターを使用して検索を実行すると、メソッドの 1 つから NPE が取得されました。誰かが同様の問題を抱えていましたか?インデックスをどのように更新しますか?