近实时Solr Facet查询自动完成

时间:2013-12-17 21:43:06

标签: solr faceted-search

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

例如:

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>

但是在更新索引之后,facet查询总是很慢。

本文档称,“软提交会使文档可见,但需要付出一定代价...... FieldValueCache无效,因此facet查询必须等到刷新缓存”

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

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

具有DocValues的构面是实时兼容的,但不支持TextFields。 见http://wiki.apache.org/solr/DocValues

我必须对查询使用过滤器,因此我无法使用建议器组件。

我的问题:

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

1 个答案:

答案 0 :(得分: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

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