Blok funkce SOUNDEX

Blok funkce SOUNDEX vypočítává zvukovou podobnost řetězce znaků.

Hodnoty Soundex mají vlastnost, že podobně vyslovovaná slova vytvářejí stejnou hodnotu Soundex. To lze použít k vyhledávání v databázích, pokud znáte výslovnost, ale ne přesné psaní. Funkce Soundex vrátí řetězec čtyř znaků začínající písmenem.

Vstup STR

Vstup definuje řetězec znaků k vypočítání.

Výstup

Vrátí řetězec se Soundexovým kódem.

Základní pravidla

Každý Soundexový kód se skládá z jednoho písmene následovaného třemi číslicemi, například A532 pro Antcas. Má-li slovo tak mnoho písmen, že by se daly vytvořit více číslice, přeruší se po třetí číslici. Má-li slovo příliš málo písmen, doplní se poslední číslice nuly. Asijské jméno Lee se tedy kóduje jako L000.

Číslice Reprezentovaná písmena
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

Samohlásky A, E, I, O a U a souhlásky H, W a Y se ignorují, pokud nejsou prvním znakem. Pro německý jazyk lze dále definovat: Umlauty Ä, Ö a Ü se ignorují, ostré S ß se kóduje jako jednoduché S.

Mají-li v původním řetězci znaků několik po sobě jdoucích písmen stejný Soundexový kód, objeví se tento kód ve výsledku pouze jednou, z abfx se tedy stane například A120 (a zůstává, protože je prvním písmenem, b a f dávají stejný kód 1, x dává 2, na konci se přidá nula, aby se dostalo ke čtyřem znakům).

Při praktickém použití postupu Soundex jsou především dva body kritizovány: Za prvé je velmi zaměřen na anglický jazyk a za druhé nabízí pouze velmi hrubou analýzu.

Nicméně lze konstatovat, že se jedná o nejčastěji používaný algoritmus pro fonetické vyhledávání. K tomu přispělo jistě i to, že pro databázi Oracle byl již velmi brzy implementován odpovídající standardní příkaz PL/SQL.