Blok funkcji SOUNDEX

Blok funkcji SOUNDEX oblicza podobieństwo dźwiękowe ciągu znaków.

Wartości Soundex mają własność, że podobnie wymawiane słowa generują tę samą wartość Soundex. Może to być wykorzystane do wyszukiwania w bazach danych, gdy znasz wymowę, ale nie dokładną pisownię. Funkcja Soundex zwraca ciąg znaków składający się z czterech znaków, rozpoczynający się literą.

Wejście STR

Wejście definiuje ciąg znaków do obliczenia.

Wyjście

Zwraca ciąg znaków z kodem Soundex.

Zasady podstawowe

Każdy kod Soundex składa się z litery, za którą następują trzy cyfry, np. A532 dla Antcas. Jeśli słowo do zakodowania ma tyle liter, że można wygenerować więcej cyfr, przerwij po trzeciej cyfrze. Jeśli słowo ma za mało liter, uzupełnij ostatnie cyfry zerami. Azjatyckie imię Lee zostanie więc zakodowane jako L000.

Cyfra Reprezentowane litery
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

Samogłoski A, E, I, O i U oraz spółgłoski H, W i Y należy ignorować, chyba że są to pierwsze znaki. Dodatkowo dla języka niemieckiego można zdefiniować: Diakrytyczne litery Ä, Ö i Ü należy ignorować, a "szarfe S" ß koduje się jak proste S.

Jeśli kilka kolejnych liter w oryginalnym ciągu znaków ma ten sam kod Soundex, pojawia się on w wyniku tylko raz, z abfx staje się więc np. A120 (a pozostaje, ponieważ jest to pierwsza litera, b i f dają ten sam kod 1, x daje 2, na końcu dodaje się zero, aby uzyskać cztery znaki).

W praktycznym zastosowaniu metody Soundex krytykowane są głównie dwa punkty: Po pierwsze jest ona bardzo dostosowana do języka angielskiego, po drugie oferuje tylko bardzo ogólną analizę.

Niemniej jednak należy stwierdzić, że przedstawiony algorytm jest prawdopodobnie najczęściej stosowanym do wyszukiwania fonetycznego. Z pewnością przyczynił się do tego fakt, że dla bazy danych Oracle już bardzo wcześnie zaimplementowano odpowiedni standardowy polecenie PL/SQL.