对于我正在进行的一个项目,我有一个包含近 1000 万份文档的索引。对于从 100k 到 5m 的文档集,我需要定期添加字段。
Lucene 4 支持更新文档(基本上是删除和添加)。将字段添加到更大的文档集的好方法是什么?
到目前为止,我尝试的是使用SearcherManager
包装 a IndexWriter
,并通过将这些包装在 a 中,对尚未包含该字段但与Query
我感兴趣的文档进行小型搜索BooleanQuery
。然后我遍历ScoreDocs
,检索文档,添加我的新字段并调用我与每个文档一起存储的writer.updateDocument
。uuid
然后我调用commit
and maybeRefreshBlocking
,重新获取IndexSearcher
并再次搜索。这有点慢,似乎是一种幼稚的方法。