Solr 8.5 facet pivot不符合预期:如何筛选含全部指定idTelecamera的targa?
解决Solr 8.5中筛选关联所有指定idTelecamera的targa问题
核心问题分析
你当前使用的fq=idTelecamera:(55 115 56)是OR逻辑,会返回包含任意一个指定idTelecamera的targa,不符合你需要的「同时关联所有三个id」的要求。
正确查询参数配置
1. 调整过滤条件为AND逻辑
用Solr布尔查询语法,强制要求targa必须关联所有三个idTelecamera:
fq=(idTelecamera:55 AND idTelecamera:115 AND idTelecamera:56)
或者更简洁的写法:
fq=idTelecamera:55 AND idTelecamera:115 AND idTelecamera:56
2. 保留分面参数
原有分面参数可以直接保留,确保只对符合条件的targa进行分面统计:
facet=true&facet.pivot=targa,idTelecamera
完整查询示例
组合后的完整查询参数如下:
q=*:*&fq=(idTelecamera:55 AND idTelecamera:115 AND idTelecamera:56)&facet=true&facet.pivot=targa,idTelecamera
额外说明
如果idTelecamera是多值字段(multivalued="true"),上述查询会精准匹配同时包含55、115、56三个值的targa文档;如果是单值字段,该查询会返回空结果(单值字段无法同时存储三个不同值),这种情况下需要检查数据模型是否匹配业务逻辑。
内容的提问来源于stack exchange,提问作者Andrea Cappuccini
相关产品推荐
相关产品推荐

