Functieblok SOUNDEX

De functieblok SOUNDEX berekent de klankgelijkheid van een tekenreeks.

Soundex-waarden hebben de eigenschap dat vergelijkbaar uitgesproken woorden dezelfde Soundex-waarde produceren. Dit kan worden gebruikt voor het zoeken in databases, als je de uitspraak kent maar niet de exacte spelling. De functie Soundex geeft een tekenreeks van vier tekens terug, beginnend met een letter.

Ingang STR

De ingang definieert de te berekenen tekenreeks.

Uitgang

Geeft een tekenreeks terug met de Soundex-code.

Basisregels

Elke Soundex-code bestaat uit een letter gevolgd door drie cijfers, bijvoorbeeld A532 voor Antcas. Als het te coderen woord genoeg letters heeft om meer cijfers te produceren, wordt na de derde cijfer gestopt. Als het woord te weinig letters heeft, worden de laatste cijfers aangevuld met nullen. De Aziatische naam Lee wordt dus gecodeerd als L000.

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

De klinkers A, E, I, O en U en de medeklinkers H, W en Y zijn te negeren, tenzij ze het eerste teken zijn. Voor de Duitse taal kan worden gedefinieerd: De umlauts Ä, Ö en Ü zijn te negeren, het "scharfe S" ß wordt gecodeerd als een simpel S.

Als meerdere opeenvolgende letters in de originele tekenreeks dezelfde Soundex-code hebben, verschijnt deze code in het resultaat slechts één keer, uit abfx wordt dus bijvoorbeeld A120 (a blijft, omdat eerste letter, b en f geven beide dezelfde code 1, x geeft 2, aan het einde wordt een nul toegevoegd om vier tekens te verkrijgen).

Bij de praktische toepassing van de Soundex-methode worden voornamelijk twee punten bekritiseerd: Ten eerste is deze zeer gericht op de Engelse taal, ten tweede biedt hij slechts een zeer grove analyse.

Desondanks moet worden vastgesteld dat het getoonde algoritme waarschijnlijk wel het meest toegepaste voor fonetische zoekopdrachten is. Hieraan heeft zeker bijgedragen dat er al vrij vroeg een overeenkomstige PL/SQL-Standaardopdracht in de database Oracle werd geïmplementeerd.