如何从Solr提取含空格的记录?求对应fq参数
Solr筛选带尾部空格的CallSign记录的fq参数
要提取CallSign字段带不定数量尾部空格的文档(仅返回这类文档的CallSign与ID),需结合字段特性设计过滤参数:
核心分析
CallSign是text_general类型的TextField,索引时分词器会自动去除空格等空白字符,直接针对索引token查询尾部空格无效。但该字段设置了stored="true",可基于原始存储值通过函数查询实现筛选。
推荐过滤参数(高性能)
fq={!frange l=1}sub(strlen(CallSign), strlen(trim(CallSign)))
这个参数的逻辑是:
- 计算原始CallSign值的长度(包含尾部空格)与去掉首尾空格后的长度差值
- 差值≥1说明原始值存在首尾空格(包含你需要的尾部空格场景)
- 函数查询基于存储值计算,性能比正则更适合百万级文档
严格筛选仅尾部空格(性能谨慎)
如果需要排除带头部空格的记录,仅保留纯尾部空格的文档,可使用正则函数查询,但对百万级数据性能会有影响:
fq={!func}regex(CallSign, '.*\s+$')
补充:指定返回字段
查询时记得通过fl参数只返回需要的字段,避免冗余数据:
fl=ID,CallSign
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

