我的用例涉及索引一个 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/