【问题标题】:Near Real Time Solr Facet Query for autocomplete用于自动完成的近实时 Solr Facet 查询
【发布时间】:2013-12-17 21:43:06
【问题描述】:

我正在使用构面查询来自动完成。

例如:

http://localhost:8983/solr/collection1/autocomplete_en?facet.prefix=sol&...

更新处理程序配置为执行软提交:

  <updateHandler class="solr.DirectUpdateHandler2">
    <updateLog>
      <str name="dir">${solr.ulog.dir:}</str>
    </updateLog>
    <autoCommit>
      <maxTime>30000</maxTime>
      <openSearcher>false</openSearcher>
    </autoCommit>
    <autoSoftCommit>
      <maxTime>1000</maxTime>
    </autoSoftCommit>
  </updateHandler>

但更新索引后,分面查询总是很慢。

该文档说,“软提交将使文档可见,但需要付出一些代价。... FieldValueCache 已失效,因此方面查询将不得不等到缓存刷新”

http://searchhub.org/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/

因此,即使在软提交之后,构面查询也总是很慢,因为必须重新计算 FieldValueCache。

带有 DocValues 的 Facet 是实时兼容的,但遗憾的是不支持 TextFields。 见http://wiki.apache.org/solr/DocValues

我必须对查询使用过滤器,所以我不能使用建议器组件。

我的问题:

  • 还有机会使用带有分面的近实时搜索吗?
  • 在弹性搜索中如何解决这个问题?

【问题讨论】:

    标签: solr faceted-search


    【解决方案1】:

    更改facet.method 可能会有所帮助。 fc 作为默认值不适用于全文字段的分面。

    就我而言,enum 提供了帮助:

    http://localhost:8983/solr/collection1/autocomplete_en?facet.prefix=sol&facet.method=enum...
    

    但是对于更大的索引,即使enum 也可能太慢了。

    如果您不需要对查询进行过滤,则应考虑使用建议器组件: http://wiki.apache.org/solr/Suggester

    近乎实时也是一个问题。 但在大多数用例中,优化后的更新就足够了。

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      相关资源
      最近更新 更多