Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 写入时的Solr缓存更新_Caching_Solr - Fatal编程技术网

Caching 写入时的Solr缓存更新

Caching 写入时的Solr缓存更新,caching,solr,Caching,Solr,我一直在寻找可能的方法来加速我正在开发的应用程序的solr查询。我已经读过solr caching(),我认为过滤器和查询缓存可能会有所帮助。应用程序的配置确实设置了这些缓存,但它似乎使用了一些未经实验的默认设置,并且我们的缓存命中率相对较低 我无法确定的一个细节是缓存如何处理更新。如果我更新会导致从查询或筛选器缓存中删除或添加该记录的记录,缓存是否会以性能方式更新?应用程序的写容量相当大,因此缓存是否以有利的方式更新可能会决定尝试优化缓存是否会有很大帮助。简单的回答是,对索引进行更新(添加、编

我一直在寻找可能的方法来加速我正在开发的应用程序的solr查询。我已经读过solr caching(),我认为过滤器和查询缓存可能会有所帮助。应用程序的配置确实设置了这些缓存,但它似乎使用了一些未经实验的默认设置,并且我们的缓存命中率相对较低


我无法确定的一个细节是缓存如何处理更新。如果我更新会导致从查询或筛选器缓存中删除或添加该记录的记录,缓存是否会以性能方式更新?应用程序的写容量相当大,因此缓存是否以有利的方式更新可能会决定尝试优化缓存是否会有很大帮助。

简单的回答是,对索引进行更新(添加、编辑或删除),然后执行提交操作,将重建索引并替换当前索引。由于缓存与特定的索引版本相关联,因此在替换索引时会丢弃缓存。如果启用了自动预热,则新索引中的缓存将使用最近的查询或您指定的查询进行初始化

然而,我们谈论的是Solr,通常有多种方法来处理任何情况。这里的情况绝对如此。上面提到的提交操作称为硬提交,可能发生,也可能不发生,这取决于Solr配置以及应用程序如何与之交互。还有另一种称为“软提交”的选项,我认为它是索引的一个好选择。区别就在这里

硬提交意味着重新生成索引,然后将其持久化到磁盘。这可以确保更改不会丢失,但这是一项昂贵的操作

软提交意味着索引在内存中更新,而不是持久化到磁盘。这是一个成本低得多的操作,但如果Solr意外停止,数据可能会丢失

更进一步说,Solr有两个非常好的设置,我强烈推荐这两个设置,即autoCommitautoSoftCommit。如果启用自动提交,则应禁用应用程序代码中的所有硬提交操作。“自动提交”设置可以指定将文档更改排入队列的时间段(maxTime)和/或队列中允许的更改数量(maxDocs)。当达到上述任一限制时,将执行硬提交。autoSoftCommit设置的工作方式相同,但会导致(您猜到了)软提交。Solr关于的文档是了解这一点的良好起点

这些设置可以有效地进行批量更新,而不是一次更新一次。在像您这样的大量编写的应用程序中,这绝对是一个好主意。最佳设置将取决于读写频率,当然还有应用程序的业务需求。如果需要近实时(NRT)搜索,则可能需要将autoSoftCommit设置为几秒钟。如果搜索结果有点陈旧,那么你应该考虑将AutoSoFut承诺设置为一分钟甚至几分钟。自动提交设置通常设置得更高,因为它的主要功能是数据完整性和持久性

我建议在非生产环境中进行大量测试,以确定应用程序的合理缓存和提交设置。考虑到您的应用程序写操作繁重,我倾向于保守的缓存设置,您可能希望完全禁用自动预热。您还应该监视生产中的缓存统计信息,并以低命中率减少缓存的大小。当然,请记住,您的最佳设置将是一个移动的目标,因此您应该定期检查它们,并在需要时进行调整

另一方面,这本书是一本很好的读物,与当前的主题相关。祝你好运,与Solr一起玩得开心