Internetsupport.de - Jens Gippner, Berlin

PHP-Programmierer, Web-Entwickler, Webdesigner, Freelancer

Sie kennen die Google Suchvorschläge „meinten Sie“… ?


Damit erreicht Google eine verbesserte Suche mit phonetisch gleich klingenden Wörtern . Man kann auch sagen,  es ist einfach eine tolerantere Suche mit Wörtern, die Tippfehler enthalten können.
Bei MySQL ist die Funktion soundex() dafür implementiert, die aber nur mit englischen Wörtern funktioniert. Technisch wird dabei mit dieser Funktion ein Wort in eine Ziffernfolge umgewandelt. Diese Ziffernfolge muß in der Datenbank dafür neben dem eigentlichen Text abgelegt werden.
Bei einer Mysql Suche in diesem Datenfeld wird der Suchbegriff ebenfalls während der Suche mit dieser Funktion in eine Ziffernfolge umgewandelt und damit in dem soundex – Datenfeld eine Übereinstimmung gesucht.

Soundex für die englische Sprache

Wird diese phonetische Suche in PHP programmiert, wäre zu erwähnen, dass sowohl MySQL und PHP diese soundex-Funktion implementiert haben, die sich aber im Detail etwas unterscheiden.

Soundex für die deutsche Sprache nach dem Kölner Model

Interessanter ist für uns natürlich die deutsche Sprache und dafür gibt es auch PHP-Funktionen, bzw. Klassen, die nicht
in MySQL oder PHP implementiert sind. Zur Anwendung kommt hier das sogenannte Modell der „Kölner Phonetic“.
Hier wird wie bei Soundex das Wort in eine Ziffernfolge übersetzt und in der MySQL Datenbank mit im Datensatz des Suchtextes gespeichert.

Beispiel: „Bad“ „Salzungen“ wird in „12“ „858646“ umgewandelt.

Bürger = 1747
Buerger = 1747
Meiser = 687
Meyer = 67
Beier = 17
Eier = 07
heiß = 08
heiss = 08

Nach Eintrag der Zahlen in eine zusätzliche Spalte der MySQL-Datenbank könnte man die Datenbank für „Bad“ Salzungen“ dann mit diesem SQL-Statement abfragen:

SELECT * FROM `d_adressen` WHERE  ( ort_phs like ‚%12%‘ OR ort_phs like ‚%858646%‘ )

 

Sie sehen vermutlich sofort, dass dieses Statement auch alle Orte mit „Bad“ anzeigt. Ich verwende diese Suche im Zusammenhang mit der ganzen Adresse. Daher sind in diesem Fall die Suchergebnisse so gewünscht. Würde ich nur nach Orten suchen gebe ich statt OR ein AND ein.  Es macht auch Sinn, alle unspezifischen Wörter wie „in“, „am“, „und“ für diese Suche vorher herauszufiltern.

Dafür gibt es ja die beliebte PHP- Funktion  str_ireplace.

$suche_ausschluss = array(„am“, „im“,“und“);

$str = str_ireplace($suche_ausschluss,“,$str);

 

Ich nutze für die Phonetische Suche nach dem Köllner Modell eine PHP-Funktion von dem Programmierer Andy Theiler (FreeBSD License).

 

zurück zum Blog – Liste der Artikel

Secured By miniOrange