search - Solr 在大量方面值上的扩展能力如何?

标签 search full-text-search lucene solr facet

我正在使用 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/

相关文章:

mysql - Magento 重新索引目录搜索索引锁定等待超时超时

mysql - 如何在 InnoDB 中构建这样一个将下划线视为单独单词的全文索引?

java - Hibernate Search 方面返回小写的值

r - 在 R 中实现禁忌搜索

php - MYSQLI 搜索查询使 GoDaddy 网站服务器崩溃

sql - mysql查询和全文中的Concat()

lucene - 如何在 Elasticsearch 中始终推荐不同的文档(文件)

java - Hibernate Search 是否可以在索引过程之前预定义查询或条件?

php - 尝试进行 php/mysql 搜索,需要将字符串分解为数组并搜索

java.lang.IllegalStateException : failed to create a child event loop