Soundex音似搜索的编码规则


Soundex是什么?

Soundex是一个将单词编码为1个字母+3个数字(不足部零)的算法,它将发音相近的单词映射到同一个编码,能有效地搜索到发音相似或相近的单词。
例如:love的编码为L010,live的编码为L010
假设用户搜索"my love"却错误地输入了"my live",那么soundex依然能匹配到正确的结果。

编码规则

Soundex只能对字母进行编码,因此预处理掉单词中的非字母字符,如数字、特殊符号等,以及转换大写。
编码规则:

  1. 保留第一个字母,去掉所有a e i o u y h w
  2. 数字代替字母(基于发音分类)

b 、f 、p、 v :1
c、g、j、k、q、s、x、z:2
d、t :3
l:4
m、n:5
r:6

  1. 编码去重,相邻编码相同(或中间被h、w隔开)则合并(含首字母),被其它间隔则保留。
  2. 取得1个字母+3个数字,不足补0

样例

1. 带有特殊符号的字符串

输入为:he1llo#abc1
输出为:H412

预处理: he1llo#abc1 -> helloabc -> HELLOABC

  1. HELLOABC -> HLLBC
  2. H4412
  3. H412
  4. H412

2. 短字符串

输入为:jk
输出为:J000

预处理: jk -> JK

  1. JK -> JK
  2. J2
  3. J (J对应2,即22,仅编码一次,故保留首字母即可)
  4. J000

总结

Soundex是一个简洁的发音相似的编码算法,它可以达到初级的模糊音效果。
如果需要更精准的发音映射,可以使用Metaphone算法,它使用了更高级的规则;或者改进版本的的Double Metaphone算法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值