为什么Lucene的IndexWriter updateDocument方法在其参数中只占用一个Term?

时间:2014-08-20 09:32:11

标签: java apache lucene

我注意到updateDocument method在其参数中只占用一个Term。 我发现它很奇怪,因为deleteDocument可以使用多个术语甚至是查询来选择要删除的文档......

为什么updateDocument不允许我们指定多个Term?背后有技术原因还是只是它还没有实现?

1 个答案:

答案 0 :(得分:0)

免责声明:我没有写这段代码,也不知道确切的原因,所以我只能猜测。

首先,Lucene中的更新始终意味着删除+插入的组合,而删除始终是单个操作。是的,更新现在是原子的,但您仍然需要.commit()才能使更改生效。

其次,我想很难设计干净的API来更新多个文档。对于每个文档(它本身是字段的集合),您必须传递一组术语,因此对于多个文档,您必须拥有一组集合(或特殊设计的命令对象),yuck。 And when in doubt, leave it out!要求客户进行循环有什么问题?这真的不是那么复杂。