SOLR 在第一个方面查询很慢,但在以后的查询中很快

Van*_*yen 1 solr facet

我试图弄清楚为什么我的 SOLR (4.1 ) 实例对于方面查询非常慢。该索引有大约 200M 文档,服务器有 64GB RAM。

我的查询如下所示:

q=CampaignId:1462%0ASourceDateUtc:[2014-01-01T00:00:00.000Z TO 2014-01-30T00:00:00.000Z]
&wt=xml&indent=true&rows=0
&facet=true&facet.field=UserName&facet.mincount=10&facet.method=fc
Run Code Online (Sandbox Code Playgroud)

第一次点击大约需要 6 分钟,但是当结果回来时,我用相同的查询再次搜索或稍微更改 SourceDateUtc 中的范围,它运行得非常快。

这是我的 solrconfig.xml(查询部分)

q=CampaignId:1462%0ASourceDateUtc:[2014-01-01T00:00:00.000Z TO 2014-01-30T00:00:00.000Z]
&wt=xml&indent=true&rows=0
&facet=true&facet.field=UserName&facet.mincount=10&facet.method=fc
Run Code Online (Sandbox Code Playgroud)

我也尝试启用 filterCache 但它没有帮助。

谢谢。

leo*_*eoh 6

可能是热身问题。预热字段缓存(facet.method=fc)对于solr有效工作非常重要。如果您尚未配置预热查询,请考虑将方面查询添加到您的示例中,添加到 solrconfig.xml 中的 newsearcher 和 firstsearcher 部分。

http://wiki.apache.org/solr/SolrConfigXml#A.22Query.22_Related_Event_Listeners

<listener event="firstSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
        <lst> <str name="q">*:*</str>
              <str name="start">0</str>
              <str name="rows">10</str>
              <str name="facet">true</str>
              <str name="facet.field">UserName</str>
              <str name="facet.mincount">10</str>
              <str name="facet.method">fc</str>
        </lst>
      </arr>
</listener>
Run Code Online (Sandbox Code Playgroud)

您可能还想关闭 useColdSearher

<useColdSearcher>true</useColdSearcher>
Run Code Online (Sandbox Code Playgroud)

进一步阅读:

什么是 Solr 中良好的自动预热查询,它们是如何工作的?

http://wiki.apache.org/solr/SolrFacetingOverview

  • 乐意效劳。它还取决于您如何配置缓存设置...但通常不会占用太多内存来对 \*:\* 进行分面。我曾经收集了大约 100G,但只占用了 17G 堆内存,并在 \*:\* 上使用了分面 (2认同)