lucene - lucene批量更新策略?

标签 lucene updates bulk

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

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

到目前为止,我尝试的是使用 SearcherManager 包装 IndexWriter,并对尚未包含该字段但匹配的文档进行小型搜索我感兴趣的 Query,通过将它们包装在 BooleanQuery 中。然后,我迭代 ScoreDocs,检索文档,添加新字段,并使用我随每个文档存储的 uuid 调用 writer.updateDocument。然后我调用 commitmaybeRefreshBlocking ,重新获取 IndexSearcher 并再次搜索。这有点慢,而且似乎是一种幼稚的方法。

最佳答案

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

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

因此,如果您仅在必要时而不是在每次搜索之前重新获取IndexSearcher,那么至少会稍微简化并加快速度。

关于lucene - lucene批量更新策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333257/

相关文章:

c# - 使用 ElasticLowLevelClient 客户端在 Elasticssearch 中批量索引

php - 从多个文件夹中批量插入图像(文件夹中包含图像)将不起作用

solr - 可以使 Apache Solr 索引在事务上与被索引的数据库保持一致吗?

java - 在 apache solr 中搜索 *n@domain* 时出错

python - pyravendb查询参数解析错误

rss - 检查新条目的 RSS 提要的可靠方法是什么?

solr - Solr 的 Cursor 和 ElasticSearch 的 Scroll 之间的差异

c# - 更新 Visual Studio 2019 错误

windows - 通过 CMD 批处理文件卸载 Windows 更新

Mongodb 在一次往返中执行多个查询