如何在Solr查询中编写正则表达式实现固定字符串精确匹配
原因说明
你之前使用的q=field:"Text input"属于Solr的短语查询,规则是匹配所有字段值中包含该连续短语的文档,因此只要字段内容里出现了"Text input"片段就会命中,自然会返回全部三条数据,无法实现全值精确匹配。
正则查询写法
Solr 正则查询默认会匹配整个字段的完整值,直接使用如下语法即可实现需求:
q=field:/Text input/
用正斜杠包裹需要匹配的完整内容,就会只返回field字段值完全等于Text input的第一条数据。
更优替代方案(非正则,性能更高)
如果你的field字段配置为不分词的string类型,或者存在对应的不分词子字段(比如field_str),不需要动用正则就能实现更高效的精确匹配:
- 直接写Term查询:
q=field:"Text input"(注意这里的字段必须是不分词的string类型才能生效) - 如果字段有分词,也可以转义空格后查询:
q=field:Text\ input
内容的提问来源于stack exchange,提问作者Raavi
相关产品推荐
相关产品推荐

