如何使用Solr的DirectUpdateHandler2正确回滚提交?

时间:2016-12-06 20:52:51

标签: java solr lucene

在Solr 5.5中(以嵌入模式启动)我创建了一些文档,提交它们然后我试图回滚我的最后一次提交。以下是我在我的代码中调用的内容:

UpdateHandler updateHandler = core.getUpdateHandler()
... // some docs
UpdateHandler#addDoc
UpdateHandler#commit 

检查索引 - 一切正常,索引包含所有文档。

但是当我打电话给UpdateHandler#rollback并检查索引时 - 没有任何改变......

有什么问题?我应该在回滚后提交吗?

2 个答案:

答案 0 :(得分:1)

Solr提交不起作用。提交将挂起文档写入索引。自上次提交以来,回滚会丢弃挂起文档,而不是提交它们。回滚不会撤消上次提交。

一旦你提交,你就说“这就是它,我们走吧”,Solr更新索引并使新文档可搜索。

据我所知,这也是提交和回滚在大多数RDBMS中的工作原理。

答案 1 :(得分:0)

至少在可行的情况下,您可以以编程方式删除上次提交。因此,如果您刚刚插入了唯一 ID 为 1234567 的文档,则删除具有该 ID 的文档。不是一个很好的解决方案,但我在寻找更好的方法时遇到了问题。如果你找到我的朋友,请告诉我