SOUNDEX Algorithmus

Ich bin vor kurzem während einer MySQL-PHP-Programmier-Session auf den Soundex Algorithmus gestoßen. Dieser beschreibt eine phonetische Kategorisierung mit Hilfe einer Wertung einzelner Buchstaben.

Beispiele:
SELECT SOUNDEX('Hello'); -> 'H400'
SELECT SOUNDEX('Quadratically'); -> 'Q36324'

Das beste ist, das dieser Algorithmus bereits in MySQL implementiert ist und man somit eine umfangreichere Suche als mit der üblichen LIKE Funktion verwenden kann.

Beispiel einer sehr einfachen SOUNDEX-Suche:
SELECT * FROM table WHERE SOUNDEX(Name) LIKE CONCAT('%', SUBSTR(SOUNDEX('suchstring'), 1, 2), '%');

Wir wissen also jetzt schon was die SOUNDEX() Funktion macht. LIKE ist ein Vergleichsoperator, welcher überprüft ob ein String in einem anderen vorkommt.

Zum Beispiel bei einer ganz einfachen Suche:
SELECT * FROM table WHERE Name LIKE '%test%';
Das heißt in der Spalte Name muss das Wort „test“ vorkommen. Groß- und Kleinschreibung sind dabei egal.

CONCAT() fügt einfach mehrere Strings zu einem zusammen.
SELECT CONCAT('%', 'test', '%'); -> '%test%'

Und SUBSTR(string, start, stop) kürzt in unserem Fall einfach Strings.
SELECT SUBSTR('teststring', 1, 2); -> 'te'

Der wesentliche Vorteil aber bei dieser Suche ist, das auch Wörter gefunden werden, die ähnlich klingen. Die Genauigkeit kann mit dem stop-Parameter in der SUBSTR Funktion eingestellt werden.

Eine Antwort auf „SOUNDEX Algorithmus“

  1. Vor Kurzem hatte ich auch ein Projekt, bei dem ich einen Suchalgorithmus anwenden musste.
    Ein Kollege hat mir dann den PHP Befehl SOUNDEX vorgeschlagen – für mein Projekt genau das Richtige (hat mir eine Menge Programmierarbeit erspart) …. PHP ist einfach Klasse 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.