功能區塊 SOUNDEX

功能區塊 SOUNDEX 計算字串的音相似性。

Soundex 值具有以下特性:發音相似的單詞會產生相同的 Soundex 值。這可以用於在資料庫中搜索,當您知道發音但不知道確切拼寫時。函數 Soundex 返回一個由四個字符組成的字串,以一個字母開頭。

輸入 STR

輸入定義要計算的字串。

輸出

返回帶有 Soundex 代碼的字串。

基本規則

每個 Soundex 代碼由一個字母後跟三個數字組成,例如 A532 用於 Antcas。如果要編碼的單詞有這麼多字母以至於可以產生更多數字,則在第三個數字後截斷。如果單詞的字母太少,則用零填充最後的數字。因此,亞洲名稱 Lee 被編碼為 L000

數字 代表的字母
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

元音 A, E, I, OU 以及輔音 H, WY 在第一個字符以外應忽略。擴展到德語,可以定義:元音 Ä, ÖÜ 應忽略,鋒利的 S ß 如簡單的 S 編碼。

如果原始字串中的多個連續字母具有相同的 Soundex 代碼,則結果中只出現一次,從 abfx 大約變為 A120 (a 保留,因為第一個字母,bf 都產生相同的代碼 1, x 產生 2, 最後添加一個零以獲得四個字符)。

在實際應用 Soundex 方法時,主要有兩點受到批評:首先,它非常針對英語,其次,它只提供非常粗略的分析。

然而,必須指出,所描述的演算法可能是最常用於語音搜索的演算法。這一定程度上是由於 Oracle 資料庫已經很早就實現了相應的 PL/SQL 標準命令。