首页 > 解决方案 > Solr 中 IndexSearcher 的生命周期

问题描述

我想对IndexSearcherSolr 的生命周期有更多的了解,我了解IndexSearcherLucene 会建议“出于性能原因,如果您的索引不变,您应该IndexSearcher在多个搜索中共享一个实例,而不是为每个搜索创建一个新实例——搜索。” (Lucene 4.6.1)。

但是当事情来到带有 servlet 调度程序的 Java Webapp 中的 Solr 世界时。IndexSearcher只要没有索引更改,我们是否还会继续重用同一个实例?

我看到“Hossman”有关于solr 搜索请求的生命周期的演讲,但他没有提到我们如何处理/清理indexsearcher.

标签: searchsolrlucene

解决方案


原因是您不直接与 Lucene 的 IndexSearcher 交互。这是 Solr 的责任,并且作为 Solr 的用户远离您。

使用 Solr 时,您与搜索器交互的唯一方式是通过自动提交设置

当发出提交或优化时,当前的索引读取器将被关闭并打开一个新的。发出这些命令时,您可以选择告诉 Solr 您要等到新搜索打开后再返回,从而确保您的更改已变得可见(通过waitSearcher)。

除此之外,搜索器的生命周期(可以概括为“在对索引进行更改之前保持活动状态,然后重新打开一个新的”)完全隐藏在外部世界之外。


推荐阅读