当前位置: 首页 > 面试题库 >

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

唐哲
2023-03-14
问题内容

我的用例涉及为Lucene文档建立索引,然后在以后的多个场合中添加指向该现有文档的术语,而不用为每个新术语删除和重新添加整个文档(因为性能,而不保留原始术语)。

我确实知道不能真正更新文档。我的问题是 为什么?

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

是否有任何变通方法来支持我在现有文档中添加术语(索引字段)的用例?


问题答案:

我确实知道不能真正更新文档。我的问题是为什么?

吉利(Gili),编辑文档会导致相关术语过帐的更改,由于术语过帐列表结构,这是有问题的。发布列表被排序并顺序存储在内存中。因此,要将文档添加到术语的发布列表中,您必须给它一个更高的doc id名称,方法是删除整个文档并重新为其编制索引。



 类似资料:
  • 问题内容: 为什么Java中的泛型只能用于类,而不能用于原始类型? 例如,这可以正常工作: 但这是不允许的: 问题答案: ava中的泛型是一个完全编译时的结构-编译器将所有泛型使用转换为正确的类型。这是为了保持与以前的JVM运行时的向后兼容性。 这个: 变成(大致): 因此,任何用作泛型的东西都必须可转换为Object(在此示例中返回),而原始类型则不是。因此它们不能用于泛型。

  • 为什么Java中的泛型可以处理类而不能处理基元类型? 例如,这个操作很好: 但这是不允许的:

  • 下面是错误指定的错误示例。我应该如何修复它,为什么我得到一个错误?

  • 本文向大家介绍为什么Java不支持<<相关面试题,主要包含被问及为什么Java不支持<<时的应答技巧和注意事项,需要的朋友参考一下 Java添加了运算符“ >>>”来执行逻辑右移,但是由于 逻辑和算术左移运算是相同的 ,因此Java中没有“ <<<”运算符。 来自Java的Shifts …

  • 在的留档中,它说 实现必须与PartialOrd实现一致[…] 这当然是有道理的,并且可以很容易地归档,如下面的示例所示: 我想知道,为什么他们会把这个负担/风险留给我们用户,而不是用毯子 我在操场上测试了循环依赖和其他东西的问题,但这和我预期的一样有效。互联网也没有产生任何结果。 我能想到的另一个原因是宏现在是如何工作的。人们可能必须将每个替换为(或者将(PartialOrd)的宏变得更智能-我

  • 我注意到一件奇怪的事情,显然Firefox说它支持HTTPS上的Brotli,但不支持HTTP?Brotli与gzip类似,但效率更高,为什么它会将其限制为HTTPS?在HTTPS选项卡上,我看到: 他被派去了。但在另一个网站上,我没有看到。为什么它不能做Brotli压缩HTTP?