我们什么时候应该在 SOLR 中应用硬提交和软提交?

ash*_*orx 4 solr

我想知道我们什么时候应该在 SOLR 中进行硬提交,什么时候应该进行软提交。

谢谢

Mat*_*ndh 5

同样的你刚才问,但删除的问题,这是在互联网上有详尽的解释

当您希望某些内容尽快可用而无需等待将其写入磁盘时,软提交。当你想要确保它被持久化到磁盘时硬提交。

从上面的链接:

软提交

软提交是关于可见性,硬提交是关于持久性。 关于软提交最需要理解的是它们将使文档可见,但需要付出一些代价。特别是“顶级”缓存,包括您在 solrconfig.xml 中配置的内容(filterCache、queryResultCache 等)将失效!Autowarming 将在您的顶级缓存(例如 filterCache、queryResultCache)上执行,并且将执行任何 newSearcher 查询。此外,FieldValueCache 已失效,因此构面查询必须等到缓存刷新。对于非常频繁的软提交,通常情况下您的顶级缓存很少使用,并且在某些情况下可能会被消除。但是,用于函数查询、排序等的“段级缓存”是“按段”的,因此不会在软提交时失效;它们可以继续使用。

硬提交

硬提交关乎持久性,软提交关乎可见性。这里真的有两种风格,openSearcher=true 和 openSearcher=false。首先,我们将讨论在这两种情况下会发生什么。如果 openSearcher=true 或 openSearcher=false,以下后果是最重要的:

  • tlog 被截断:开始一个新的 tlog。
  • 如果新的、关闭的 tlog 中有超过 100 个文档,则旧的 tlog 将被删除。
  • 当前索引段被关闭并刷新。
  • 可以发起后台段合并。
  • 以上发生在所有硬提交上。

这留下了 openSearcher 设置

  • openSearcher=true:重新打开 Solr/Lucene 搜索器,并使所有缓存失效。自动预热完成等。这曾经是您查看新添加文档的唯一方式。
  • openSearcher=false:除了上述四点之外,没有进一步发生。要搜索文档,需要进行软提交。