java - 为什么 Lucene 不支持对现有文档进行任何类型的更新

标签 java search lucene immutability information-retrieval

我的用例涉及索引一个 Lucene 文档,然后在未来的多个场合添加指向该现有文档的术语,这不会为每个新术语删除和重新添加整个文档(因为性能,并且不保留原始文档条款)。

我知道一个文件不能真正更新。我的问题是为什么?

或者更准确地说,为什么不支持所有形式的更新(术语、存储字段)?
为什么不可能添加另一个术语以指向现有文档 - 从技术上讲:不是所有需要的是将现有文档 ID 放置在术语的发布列表中。为什么这么难?是否存在一些不可变的统计数据?

是否有任何解决方法来支持我将术语(索引字段)添加到现有文档的用例?

最佳答案

I do know that a document can not be truly updated. My question is why?

Gili,编辑文档会导致相关术语发布发生变化,由于术语发布列表结构,这是有问题的。发布列表被排序并按顺序存储在内存中。因此,要将文档添加到术语的发布列表中,您必须为其提供更高的 doc id,这是通过删除整个文档并重新编制索引来完成的。

关于java - 为什么 Lucene 不支持对现有文档进行任何类型的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185406/

相关文章:

php - 搜索多个单词 PHP

java - Lucene高效交叉多个索引的搜索结果

search - Solr Facetting - 显示前 10 个结果和其他

ruby - Thinking_Sphinx 搜索选项

java - Lucene org.apache.lucene.document.Field 类的方法使用

date - 在ElasticSearch中搜索日期可选时间字段

java - 如何设置 jasper 报告的相对类路径

java - 可观察到像 Lmax Disruptor 这样的批处理

java - Android X : tools:replace specified at line: for attribute, 但未指定新值

java - 将动态网络元素值传递给 Javascript 方法以在 HTML5 中执行拖放操作