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

Con*_*ion 7 lucene search solr full-text-search facet

我正在使用Solr,我想要在一个字段"组"上面对.

由于"group"是由用户创建的,因此"group"可能存在大量值.

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

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

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

谢谢.

jej*_*eje 7

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

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

关于facet.limit,将其视为一种在facet空间中导航的方法(与facet.offset一起使用),就像使用rows/offset在结果空间中导航一样.所以10~50的值是明智的.

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

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

总结一下:

  • 使用Solr 1.4

  • 确保facet.method是'fc'(好吧,无论如何这是默认值).

  • 使用facet.limit/facet.offset在facet空间中导航.