2

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

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

到目前为止,我尝试的是使用SearcherManager包装 a IndexWriter,并通过将这些包装在 a 中,对尚未包含该字段但与Query我感兴趣的文档进行小型搜索BooleanQuery。然后我遍历ScoreDocs,检索文档,添加我的新字段并调用我与每个文档一起存储的writer.updateDocumentuuid然后我调用commitand maybeRefreshBlocking,重新获取IndexSearcher并再次搜索。这有点慢,似乎是一种幼稚的方法。

4

1 回答 1

2

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

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

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

于 2013-01-15T21:44:52.547 回答