solr - 在 Apache SOLR 中保证提交的最佳方法是什么?

标签 solr solr4 solrcloud

问题:在将数据保存到磁盘和可见性同等重要的情况下,如何使用 Apache SOLR 获得“保证提交”?

背景:我们有一个网站,需要机器学习的高端搜索功能,还需要有保证的金融交易 promise 。我们只想将 SOLR 作为我们唯一的数据存储,以保持简单并且不想同时使用其他数据库。

我似乎找不到这个问题的任何答案。金融交易最简单的解决方案似乎是在记录持久化后定期向 SOLR 查询记录,但这可能需要更长的等待时间,或者是否有更好的解决方案?

任何人都可以提出一个使用 SOLR 实现“保证提交”的解决方案吗?

最佳答案

正如您在邮件列表中得知的那样,Solr 没有交易。如果您从十几个客户端建立索引,并且某个地方发生了提交(autoSoftCommit、在 udpate 请求上的 commitWithin,或者来自这十几个客户端之一的显式提交),所有由那些索引的文档所有搜索者都可以看到十几个客户。

对于事务性数据库,发送更新的十几个客户端中的每一个都必须发出提交,这只会使该特定客户端所做的更改可见。

Solr 通常不对提交做出任何保证。如果您并行发出十次提交,那很可能会超过 maxWarmingSearchers 配置,该配置通常设置为 2。这十次提交中的大多数实际上不会创建新的搜索器,这正是使新文档可见的原因。

如果您以永远不会超过 maxWarmingSearchers 的方式进行手动提交,那么当该提交无误地完成时,您可以将其视为所有更改现在可见的标志。

关于solr - 在 Apache SOLR 中保证提交的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138845/

相关文章:

solr - 如何设置具有两个搜索服务器的 Solr Cloud?

java - SolrCore初始化失败-最大直接内存可能太低

solr - solr 是否使用余弦相似度?

java - Solr 触发器优化并检查 Java 代码的进度

file - Solr 文件描述符计数

tomcat - 如何在 solrconfig.xml 中指定分片编号/zookeeper 路径?

lucene - 在 Hadoop 上运行 Lucene/Solr 的最佳方式是什么?

solr4 - 等待服务器响应时发生 Solr 错误超时

mysql - Solr 完全导入或使用 mysql 进行增量导入

solr - 如何在 SolrCloud 上强制领导者?