【问题标题】:Update to Solr dynamicField not visible after commit提交后对 Solr 动态字段的更新不可见
【发布时间】:2015-05-22 13:19:31
【问题描述】:

当我将 Solr 4.10.4 配置为“openSearcher=false”用于 autoCommit 并禁用 autoSoftCommit 时,对 dynamicField (indexed="false" stored="true") 的更新永远不会在查询结果中可见,即使在发出显式提交。

在 Solr 3.6 中,我有时会遇到相同的行为,这有点令人惊讶,因为我认为 Solr 3.6 在提交时总是有“openSearcher=true”。

这是为什么?我该如何解决?有没有办法重新打开搜索器?

对于 Solr 4 和 Solr 3.6,更新在重启 Solr 后变得可见。

在 Solr 4 中,使用“openSearcher=true”配置 autoCommit 也可以解决问题,启用 autoSoftCommit 也是如此。

【问题讨论】:

    标签: solr solr4


    【解决方案1】:

    来自 Solr 文档:

    打开搜索器

    执行提交时是否打开新的搜索器。如果为 false,则默认为 提交会将最近的索引更改刷新到稳定存储,但不会导致新的搜索者 打开以使这些更改可见

    它按应有的方式工作。如果 openSearcher 为 false,那么一旦打开新的搜索器(即在服务器启动时),提交就会变得可见。服务运行时不会创建新的搜索器。提交被刷新到磁盘,但现有的搜索器不知道它们。

    另一方面,软提交设置是关于提交的结果对新搜索者可见的速度。硬提交需要时间,因为存在基于磁盘的活动,其中新条目与现有索引合并,之后一旦搜索索引同步并启动新的搜索器,它们就可用于搜索。软提交首先更新搜索索引,因此搜索很快就会起作用,但是只有在磁盘上的数据与索引同步后才能实现完全提交状态。更快地查看新数据是一种权衡。

    【讨论】:

    • 感谢您确认在服务器运行时不会创建新的搜索器。我明白了你所解释的关于硬提交是关于持久性和软提交是关于阅读文档的可见性的要点,但仍然觉得你可以将 Solr 配置为仅在重新启动后获取新的数据更改是荒谬的。为什么我在 Solr 3.6 中也看到了这一点,没有软提交,而硬提交总是打开搜索器仍然是一个谜。
    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2018-04-29
    • 2015-01-04
    相关资源
    最近更新 更多