我正在使用 Solr,并且我想对字段“组”进行分面。
由于“组”是由用户创建的,因此“组”可能有大量值。
Solr 能够处理这样的用例吗?或者 Solr 真的不适合具有大量值的分面字段吗?
我知道我可以设置facet.limit来限制为facet字段返回的值的数量。这对我的情况有帮助吗? 假设搜索中“group”有 100,000 个匹配值,如果我将 facet.limit 设置为 50。这会加快查询速度,还是查询仍然很慢,因为 Solr 仍然需要处理和排序所有方面值并返回前 50 个?
有关如何针对大量方面值调整 Solr 的任何提示吗?
谢谢。
最佳答案
从 1.4 开始,solr 可以很好地处理具有大量值的构面,因为它默认使用简单的构面计数。 (facet.method 默认为“fc”)。
在 1.4 之前,solr 使用基于过滤器的分面方法(枚举),这对于具有少量值的属性进行分面肯定更快。此方法需要每个方面值一个过滤器。
关于facet.limit,可以将其视为一种在构面空间中导航的方式(与facet.offset结合使用),就像您使用行/偏移量在结果空间中导航一样。因此 10 ~ 50 的值是合理的。
与行/偏移量一样,由于 Solr 的性质,当偏移量变大时,您可以预期facet.limit/facet.offset 的性能会下降,但如果您保持在合理的范围内,它应该完全没问题.
默认情况下,solr 首先输出更频繁的方面。
总结一下:
使用 Solr 1.4
确保facet.method 为“fc”(好吧,无论如何,这是默认值)。
使用facet.limit/facet.offset在构面空间中导航。
关于search - Solr 在大量方面值上的扩展能力如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2902680/