批量更新策略lucene?

时间:2013-01-15 07:51:12

标签: lucene updates bulk

对于我正在进行的项目,我有近1000万份文档的索引。对于从100k到5m不等的文档集,我需要定期添加字段。

Lucene 4支持更新文档(基本上是删除和添加)。将字段添加到更大的文档集中会有什么好方法吗?

我到目前为止所尝试的是使用SearcherManager打包IndexWriter,并对尚未包含该字段但与Query匹配的文档进行小搜索我感兴趣的是,将它们包装在BooleanQuery中。然后我迭代ScoreDocs,检索文档,添加我的新字段,并使用我存储在每个文档中的writer.updateDocument来调用uuid。然后我拨打commitmaybeRefreshBlocking,重新获取IndexSearcher并再次搜索。这有点慢,看起来很天真。

1 个答案:

答案 0 :(得分:2)

您只需要 IndexSearcher ,然后您的搜索会根据您添加的字段返回不同的结果。

如果您的搜索不会受到您添加的字段的影响,则只需在将文档添加到索引时重新获取 IndexSearcher

因此,如果您只在必要时而不是在每次搜索之前重新获取 IndexSearcher ,它将简化并加快速度。