Redis Search系列 - 第三讲 拼写检查

拼写检查 - Spellchecking & Dict

Spellchecking为拼写错误的搜索词提供建议。例如,术语“reids”可能是“redis”的拼写错误版本。
从v1.4开始,Redis Search可以为拼写错误的查询术语(term)生成替代的方案。拼写错误的术语是全文术语(即单词),即:

  • 不是停词
  • 不在索引中
  • 至少3个字符

拼写错误术语的替代词:

  • 从已经索引的术语语料库生成
  • 或者(可选)从一个或多个自定义 字典(Dict) 生成

备选项根据它们与拼错词之间的 Levenshtein距离 成为拼写建议,每个拼写建议根据其在索引中的出现次数给出一个标准化分数。

注:
Levenshtein距离(Levenshtein Distance),也称为编辑距离(Edit Distance),
是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。
允许的编辑操作包括插入一个字符、删除一个字符和替换一个字符。

拼写检查相关命令示例:

# 给出my_idx索引下术语held的拼写错误替代方案,且允许的编辑距离为2
# 多组替代方案按score降序排列
# score = 包含替代术语的文档数 / 文档总数
# dict中的替代术语score恒为0
FT.SPELLCHECK my_idx held DISTANCE 2
1) 1) "TERM"
   2) "held"
   3) 1) 1) "0.66666666666666663"
         2) "hello"
      2) 1) "0.33333333333333331"
         2) "help"

# 添加字典my_fish(适用于所有索引)
# 字典值包括:[水煮鱼, 水煮肉片, 水煮]
FT.DICTADD my_fish 水煮鱼 水煮肉片 水煮 

# 给出my_idx索引下术语“水煮”的拼写错误替代方案,
# 且允许的编辑距离为2,
# 且支持从自定义字典my_fish中生成(支持INCLUDE和EXCLUDE)
FT.SPELLCHECK my_idx 水煮 DISTANCE 2 TERMS INCLUDE my_fish

关于Spellchecking的相关命令FT.SPELLCHECK可参见:
https://redis.io/docs/latest/commands/ft.spellcheck/
关于Spellchecking中自定义字典相关的命令FT.DICTADDFT.DICTDELFT.DICTDUMP可参见:
https://redis.io/docs/latest/commands/ft.dictadd/
https://redis.io/docs/latest/commands/ft.dictdel/
https://redis.io/docs/latest/commands/ft.dictdump/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗小爬EX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值