当我为autoCommit配置Solr 4.10.4并使用“openSearcher = false”并禁用autoSoftCommit时,即使在发出显式内容之后,对dynamicField(indexed =“false”stored =“true”)的更新也永远不会在查询结果中显示提交。
在Solr 3.6中我 somtimes 会遇到相同的行为,这有点令人惊讶,因为我认为Solr 3.6在提交时总是有“openSearcher = true”。
这是为什么?我该如何解决?有没有办法重新打开搜索者?
对于Solr 4和Solr 3.6,重新启动Solr后,更新将变为可见。
在Solr 4中,使用“openSearcher = true”配置autoCommit也可以解决问题,启用autoSoftCommit也是如此。
答案 0 :(得分:1)
来自Solr文档:
openSearcher
执行提交时是否打开新的搜索者。如果这是假的,则默认为 commit会将最近的索引更改刷新到稳定存储,但不会导致新的搜索器 打开以使这些变化可见
它正在努力工作。如果openSearcher为false,则一旦打开一个新的搜索器(即服务器的开头),提交就会变为可见。在服务运行时,不会创建新的搜索者。提交被刷新到磁盘,但现有的搜索者不知道它们。
另一方面,软提交设置是关于新提交者可以看到提交结果的速度有多快。硬提交需要时间,因为存在基于磁盘的活动,其中新条目与现有索引合并,之后在搜索索引同步并且启动新搜索器之后它们可用于搜索之前。软提交首先更新搜索索引,因此很快就会进行搜索,但只有在磁盘上的数据与索引同步后才能实现完全提交状态。更快地看到新数据是一种权衡。