我每天更新一个 lucene 索引。我的总体策略是:
- 查找数据库中自上次索引生成以来修改的所有对象。
- 为这些对象创建新的 tmp-index。(旧索引仍然可用)
- 使用 IndexWriter.deleteDocuments(Term) 从旧索引中删除所有新的索引文档(它们在 tmp-index 中)
- 使用 IndexWriter.addIndexes(...) 合并旧索引和 tmp-index
我在 lucene wiki 中发现:Lucene 中没有直接更新过程... 我还发现在 lucene 4.1.0 文档中:可以使用 updateDocument 更新文档...
我已经尝试过 IndexWriter.updateDocument(Term, Document) 但随后使用过滤器执行搜索我从我的一种方法中获得了 NPE,当我按照 1-4 中的描述更新索引时不会发生这种情况。有没有人遇到过类似的问题?你如何更新你的索引?