以下是SQL中Soundex代码的示例:
SELECT SOUNDEX('Smith'), SOUNDEX('Smythe');
----- -----
S530 S530
'Smith'
如何成为S530
?
在这个例子中,第一个数字是S
,因为这是输入表达式中的第一个字符,但是如何计算剩余的三个数字?
答案 0 :(得分:10)
看看这个article
代码的第一个字母对应于第一个字母 名称。代码的其余部分由三个数字派生而来 根据以下代码的单词的音节:
- 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 -> -
答案 1 :(得分:0)
Soundex是:
一种语音算法,用于通过声音将名称编入索引,用英语 发音;由罗伯特·罗素(Robert C. Russell)和玛格丽特·金·奥德尔(Margaret King Odell)于1918年首次开发
Soundex有几种实现,但是大多数实现以下步骤:
h,w
:|a, e, i, o, u, y, h, w | → "" |
| b, f, p, v | → 1 |
| c, g, j, k, q, s, x, z | → 2 |
| d, t | → 3 |
| l | → 4 |
| m, n | → 5 |
| r | → 6 |
| M33 | → M3 |
| M3 | → M300 |
| M34123 | → M341 |
这是jsFiddle中的一个交互式演示:
这是使用SQL Fiddle
的SQL演示在SQL Server中,SOUNDEX
通常与DIFFERENCE
结合使用,用于对结果位数进行计分(就像游戏mastermind †),数字匹配程度最高。
discards a lot of data, resulting in more false positives
重要的是要了解soundex的局限性和批评,以及人们在何处尝试对其进行改进,尤其是扎根于英语发音以及Metaphone。
Double Metaphone和nuances of speech in Enlgish仍然都专注于英语发音,但是为Metaphone Function in SQL(即PH
→F
)增加了更多的粒度>
Phil Factor用source on github写了Database of common name aliases / nicknames of people
Soundex通常用于识别相似的名字,要找到任何相似的昵称(例如Robert
→Rob
或{{1 }})。根据{{3}}上的这个问题,您也可以在匹配过程中针对相似的昵称进行查找。
以下是几个免费的常用昵称列表: