RedisSearch标签字段模糊搜索失效及语法错误问题咨询
RedisSearch标签字段模糊搜索解决方法
问题原因
RedisSearch的TAG字段和TEXT字段查询语法不通用:
- TAG字段不支持TEXT字段的
~模糊匹配语法,所以FT.SEARCH employee "@FN_Tags:{JEREM}~0.2"无法生效 - TAG字段查询语法中,
{}内不能使用%通配符,因此@FN_Tags:{%JEREM%}会触发语法错误
可行解决方案
方案1:使用TAG字段原生的前缀匹配
TAG字段支持前缀通配符*,可匹配以指定字符串开头的标签。针对你的场景,执行以下命令即可命中包含JEREMY标签的文档:
FT.SEARCH employee "@FN_Tags:{JEREM*}"
你的FN_Tags字段存储的"JEREMY,J"会被自动拆分为JEREMY和J两个独立标签,前缀匹配JEREM*会精准命中JEREMY标签。
方案2:将TAG字段同时索引为TEXT类型
如果需要更灵活的模糊匹配(比如中间或后缀模糊),可以在创建索引时,把FN_Tags字段同时索引为TEXT类型:
FT.CREATE employee ON HASH PREFIX 1 emp: SCHEMA FN_Tags TAG TEXT FN_Tags AS FN_Tags_Text
之后就可以用TEXT字段的模糊语法查询:
// 通配符模糊匹配 FT.SEARCH employee "@FN_Tags_Text:%JEREM%" // 基于编辑距离的模糊匹配 FT.SEARCH employee "@FN_Tags_Text:{JEREM}~0.2"
内容的提问来源于stack exchange,提问作者user732456
相关产品推荐
相关产品推荐

