我注意到updateDocument method在其参数中只占用一个Term。 我发现它很奇怪,因为deleteDocument可以使用多个术语甚至是查询来选择要删除的文档......
为什么updateDocument不允许我们指定多个Term?背后有技术原因还是只是它还没有实现?
答案 0 :(得分:0)
免责声明:我没有写这段代码,也不知道确切的原因,所以我只能猜测。
首先,Lucene中的更新始终意味着删除+插入的组合,而删除始终是单个操作。是的,更新现在是原子的,但您仍然需要.commit()
才能使更改生效。
其次,我想很难设计干净的API来更新多个文档。对于每个文档(它本身是字段的集合),您必须传递一组术语,因此对于多个文档,您必须拥有一组集合(或特殊设计的命令对象),yuck。 And when in doubt, leave it out!要求客户进行循环有什么问题?这真的不是那么复杂。