Solr中如何获取某字段超过100个的全部唯一值
Solr Facet查询仅返回前100个唯一值的解决方法
Solr分面(facet)查询默认限制返回100个分面结果,这是框架默认配置导致的,和查询基础逻辑无关。
要获取全量分面值,只需在请求参数中添加facet.limit=-1即可,参数值-1代表不限制分面返回数量。修改后的可直接使用的查询语句如下:
http://localhost:8983/solr/select/?q=*%3A*&rows=0&facet=on&facet.field=txt&facet.limit=-1
tokenized分词字段对结果的影响说明
你提到的字段分词属性会直接影响facet返回结果的准确性,需要注意:
- 对分词字段做facet统计时,返回的不是字段原始存入的完整内容,是字段内容经过配置的分词器拆分后生成的所有独立词项。例如字段存入内容
Solr tutorial,分词后拆为Solr、tutorial两个词,facet返回的唯一值会是这两个拆分后的词,而非原始完整字符串。 - 如果你需要获取的是字段原始存储的完整唯一值,不要直接对分词字段做facet查询:需要在Schema中新增一个
string/keyword类型的不分词副本字段,通过copyField配置将原txt字段的值同步到该副本字段,后续对这个不分词的副本字段做facet查询,才能得到你预期的全量原始唯一值。
注意:如果你的索引中对应字段的词项/唯一值总量非常大,配置
facet.limit=-1会占用更多服务端内存,查询耗时也会明显上升,生产环境使用前请先评估数据量级,避免影响服务稳定性。
内容的提问来源于stack exchange,提问作者Nkl Kumar
相关产品推荐
相关产品推荐

