solr可以提前缓存请求吗?

Can solr cache requests in advance?

在我的系统中,我有很多复杂的请求要提供给用户。用户可以使用我的变体或键入自己的请求。 solr在构建索引时可以提前缓存我的请求变体吗?

在 Solr 中构建索引期间没有热缓存,但是,有一个名为 query related listeners 的功能,您可以在索引搜索器启动时对其进行热缓存。

有两种类型的事件 - firstSearcher(这通常发生在 Solr 启动时)和 newSearcher,它在准备新搜索器时触发(硬提交可能是其中之一)此类事件的示例)

solrconfig.xml 中的部分可能如下所示:

<listener event="newSearcher" class="solr.QuerySenderListener">
  <arr name="queries">
  <!-- 
    <lst><str name="q">solr</str><str name="sort">price asc</str></lst>

   -->
  </arr>
</listener>

<listener event="firstSearcher" class="solr.QuerySenderListener">
  <arr name="queries">
    <lst><str name="q">static firstSearcher warming in solrconfig.xml</str></lst>
  </arr>
</listener>

您需要做的是列出繁重的查询,以便在提供搜索请求之前预热这些查询。这将使您以后的搜索速度更快。

不要忘记正确使用过滤器的通常规则,这样 FilterCache 也会被正确填充。