我正在设计一个Web应用程序,其中多个连接使用两阶段提交对数据库和solr 5进行更改。我的问题是,有没有办法隔离每个连接所做的更改,以便在将更改成功提交到数据库和solr之前,连接所做的更改将对其余连接不可见?
经过无数次搜索,我读到了这篇有趣的article,它表明这是不可能的。任何人都做过类似的事情吗?
提前致谢!
答案 0 :(得分:1)
这是不可能的。 Solr的提交是服务器端,以公开所有累积的文档。
您可以使用的另一种方法是索引到单独的集合中,然后将它们作为单个多集合别名一起使用。当然,这意味着理论上不会在两个集合中同时存在任何文档(或者您将获得重复)。
答案 1 :(得分:0)
我遇到了同样的问题。 Solr提供 2种方式提交。
硬提交 - 在给定的时间段后,它会将您的文档提交到磁盘中。
软提交 - 实时提交您的文档。使用它很好。如果您想实时提交文档。
您可以配置 solrconfig.xml ,例如
硬提交 - 它会在15秒的时间内将文档正确提交到磁盘。
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
<openSearcher>true</openSearcher>
</autoCommit>
软提交 - 只要发生任何提交,它就会以实时提交您的文档。
<autoSoftCommit>
<maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
</autoSoftCommit>