我有两个solr实例。一个是主设备,另一个是从设备,每20秒左右轮询主设备以进行索引更新。我的应用程序主要查询从属,因此大部分负载都属于它。
但是,应用程序的某些区域会查询master。例如,在执行动作期间(我正在使用symfony 2 framework + solarium bundle + solarium lib)我查询主人。我不只查询一次,而是在执行动作的生命周期中查询20-50次。您可以假设这种查询量是可以容忍的。在查询期间发生的事情让我感到困惑。
如果我执行操作(通过浏览器发出页面请求),说两次,则返回的结果集对于每个请求都是不同的。为简化起见,如果操作仅查询主控三次,则:
页面请求一:(首次查询:1次点击,第二次查询:0次点击,第三次查询:1次点击)
页面请求二:(第一次查询:0次点击,第二次查询:1次点击,第三次查询,0次点击)
第一页请求和第二页中的查询没有差异(尽管三个查询本身彼此不同)。它们是完全相同的查询。我在solr主实例中拖尾请求日志,它会记录所有请求,因此主服务器正在正确接收应用程序代码发出的所有请求(这排除了任何连接问题,应用程序级别问题),但它似乎有时会受到打击,而有时则不然。当我在前端solr界面中执行相同的查询(在执行操作期间返回0次命中)时,我确实得到了我期待的命中。
在我的测试期间,我停止了修改/更新索引的任何进程。 任何人都能对这种不一致的行为提供一些见解吗?为什么solr会为同一个查询生成两个不同的结果?