【问题标题】:Solr facet performanceSolr 刻面性能
【发布时间】:2016-03-22 00:50:26
【问题描述】:

我正在使用 Solr 方面字段,遇到了一个我不理解的性能问题。考虑以下两个查询:

  1. q=&facet.field=CONTENT&facet=true&facet.prefix=&facet.limit=10&facet.mincount=1&facet.method=enum&rows=0
  2. q=word&facet.field=CONTENT&facet=true&facet.prefix=a&facet.limit=10&facet.mincount=1&facet.method=enum&rows=0

唯一的区别是第一个查询中的facet.prefix 为空。

第一个查询在大约 20 秒后返回(结果中为QTime20000),而第二个查询只需要 80 毫秒(QTime80)。这是为什么呢?

附带说明:facet.method=fc 使查询“永远”运行并最终以org.apache.solr.common.SolrException: Too many values for UnInvertedField faceting on field CONTENT 失败。

这是 Solr 1.4 的版本。

【问题讨论】:

    标签: solr


    【解决方案1】:

    来自此文档:http://docs.lucidworks.com/display/solr/Faceting

    facet.prefix 参数将要分面的术语限制为那些 从给定的字符串前缀开始。

    这意味着你用更少的术语来表达。 现在,我很确定分面时间包含在 Qtime 中(正如这篇文章所证明的那样:http://www.mail-archive.com/solr-user@lucene.apache.org/msg39859.html)。

    所以这意味着更少的条款,更少的时间。

    【讨论】:

      【解决方案2】:

      也许不能在 CONTENT 上刻面,因为这可能有许多不同的术语,而且刻面毫无意义。尝试在类别字段或其他具有较少唯一性术语的字段上进行分面。

      【讨论】:

        【解决方案3】:

        您是否尝试在 Solr 服务器重新启动后以相反的顺序执行它们?

        通常第一个查询需要更多时间,如果下一个查询碰巧与之前的任何一个查询有更多的共同点,就会出现缓存命中,响应时间会令人难以置信。

        此外,请注意“枚举”更适合其中唯一术语数量较少的方面字段。

        另外,尝试将filter-cache. 增加到一个非常大的数字,并检查您的缓存命中率

         SOLR_DOMAIN:PORT/solr/#/collection1/plugins/cache?entry=fieldValueCache,filterCache
        

        【讨论】:

        • 感谢您的提示。我用我们的默认值试了一下,3分钟后得到了答案。然后我将filterCache 增加了十倍,3 分钟后得到了答复。然后我又增加了filterCache 十倍,15 分钟左右后得到了答案。必须是别的东西。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多