Nav*_*man 7 sql sql-server soundex
以下是SQL中Soundex代码的示例:
SELECT SOUNDEX('Smith'), SOUNDEX('Smythe');
----- -----
S530 S530
Run Code Online (Sandbox Code Playgroud)
怎么'Smith'
变成S530
?
在这个例子中,第一个数字是S
因为这是输入表达式中的第一个字符,但是如何计算剩余的三个数字?
Dmi*_*try 10
看看这篇文章
代码的第一个字母对应于名称的第一个字母.代码的其余部分由根据以下代码从单词的音节派生的三个数字组成:
- 1 = B,F,P,V
- 2 = C,G,J,K,Q,S,X,Z
- 3 = D,T
- 4 = L.
- 5 = M,N
- 6 = R.
具有相同Soundex代码的双字母,A,E,I,O,U,H,W,Y和一些前缀被忽略......
因此,对于Smith和Smythe,代码是这样创建的:
S S -> S
m m -> 5
i y -> 0
t t -> 3
h h -> 0
e -> -
Run Code Online (Sandbox Code Playgroud)
声音指数是:
\n\n\n\n\n一种按英语发音对名称进行索引的语音算法;最初由 Robert C. Russell 和 Margaret King Odell 于 1918 年开发
\n
Soundex 有多种实现,但大多数实现以下步骤:
\n\nh,w
: |a, e, i, o, u, y, h, w | \xe2\x86\x92 "" |
| b, f, p, v | \xe2\x86\x92 1 |
| c, g, j, k, q, s, x, z | \xe2\x86\x92 2 |
| d, t | \xe2\x86\x92 3 |
| l | \xe2\x86\x92 4 |
| m, n | \xe2\x86\x92 5 |
| r | \xe2\x86\x92 6 |
| M33 | \xe2\x86\x92 M3 |
| M3 | \xe2\x86\x92 M300 |
| M34123 | \xe2\x86\x92 M341 |
这是jsFiddle中的交互式演示:
\n\n\n\n这里有一个使用SQL Fiddle的 SQL 演示
\n\n在 SQL Server 中,SOUNDEX
经常与 结合使用DIFFERENCE
,用于计算结果数字中有多少相同(就像游戏主脑\xe2\x80\xa0),数字越大匹配最接近。
重要的是要了解 soundex 的局限性和批评以及人们试图改进它的地方,特别是只植根于英语发音并且还丢弃了大量数据,导致更多误报。
\n\nMetaphone和Double Metaphone仍然专注于英语发音,但为英语语音的细微差别添加了更多粒度(即\xe2\x86\x92 )PH
F
Phil Factor用 SQL 编写了一个 Metaphone 函数,源代码位于 github 上
\n\nSoundex 最常用于识别相似的名称,并且很难找到任何相似的昵称(即Robert
\xe2\x86\x92Rob
或Bob
)。根据关于人的常用姓名别名/昵称数据库的这个问题,您也可以在匹配过程中合并对类似昵称的查找。
以下是一些常见昵称的免费列表:
\n\n\n\n