Solr如何在大量方面值上进行扩展?

时间:2010-05-25 07:11:00

标签: search full-text-search lucene solr facet

我正在使用Solr而我想要在一个字段“group”上面对。

由于“group”是由用户创建的,因此“group”可能会有大量的值。

  • Solr能够处理这样的用例吗?或者Solr不适合具有大量值的facet字段吗?

  • 据我所知,我可以设置facet.limit来限制为facet字段返回的值的数量。这会对我有帮助吗? 假设搜索中有“100,000”匹配值,如果我将facet.limit设置为50.会加快查询速度,或者查询仍然会很慢,因为Solr仍然需要处理并排序所有构面值并返回前50名?

  • 有关如何针对大量方面值调整Solr的任何提示?

感谢。

2 个答案:

答案 0 :(得分:7)

从1.4开始,solr处理具有大量值的facet,因为它默认使用简单的facet计数。 (facet.method默认为'fc')。

在1.4之前,solr正在使用基于滤波器的分面方法(枚举),这对于具有少量值的属性的分面来说肯定更快。此方法每个facet值需要一个过滤器。

关于facet.limit,把它想象成一种在facet空间中导航的方法(与facet.offset一起使用),就像用行/偏移在结果空间中导航一样。所以10~50的值是明智的。

与行/偏移一样,并且由于Solr的性质,当偏移量变大时,你可以预期facet.limit / facet.offset的性能会降低,但如果你保持在合理的范围内,它应该是完全正常的

默认情况下,solr首先输出更频繁的构面。

总结一下:

  • 使用Solr 1.4

  • 确保facet.method为'fc'(嗯,这是默认值)。

  • 使用facet.limit / facet.offset浏览您的构面空间。

答案 1 :(得分:1)

不要忽视启用缓存分面相关参数(尝试使用不同的缓存大小来选择适合您系统的值):

   <filterCache class="solr.FastLRUCache" size="4096" initialSize="4096" autowarmCount="4096"/>
<queryResultCache class="solr.LRUCache" size="5000" initialSize="5000" autowarmCount="5000"/>