我试图弄清楚为什么我的 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 但它没有帮助。
谢谢。
可能是热身问题。预热字段缓存(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)
进一步阅读:
http://wiki.apache.org/solr/SolrFacetingOverview