MudGuard schrieb am 26.March.2009, 11:50:59 in der Kategorie web.coding
Suche mit PHP, auch nach falsch geschriebenen Begriffen
> Um zum Beispiel alle Filzstifte zu finden muss man genau \"Filzstift\" > eingeben. > > Ist es jetzt eine besonders schwierige Sache die Suche so umzuschreiben, > dass auch bei Schreibfehlern (z. B. Filsstift) die Artikel gefunden werden. > Muss man da extra eine Datenbanktabelle mit allen möglichen Schreibfehlern > anlegen?
Eine Möglichkeit wäre \"Soundex\".
Da werden (vereinfacht) die Begriffe genommen und ähnliche Buchstaben(gruppen) durch den gleichen ersetzt. Danach werden die veränderten Begriffe verglichen.
s und und ß und c und z werden z.B. zu s, t und d zu d, p und b zu b, ph und f und w und v zu w usw, Vokale fliegen raus.
Mehrfache gleiche Buchstaben im Resultat werden zu einem reduziert.
Aus Filsstift würde im ersten Schritt (Buchstabenersetzung) zu
wilssdiwd
im zweiten Schritt (Vokale weg) zu
wlssdwd
im dritten Schritt zu
wlsdwd
Sucht jemand nach Vuilßschdifft, wird das im ersten Schritt zu
wuilssdiwwd, im zweiten zu wlssdwwd und im dritten zu wlsdwd. Und siehe da, das paßt auf den Filsstift.
Ggf. bietet es sich an, in der Datenbank eine zusätzliche Spalte anzulegen, in dem die Produktbezeichnung schon fertig konvertiert vorliegt, dann muß die Umformung nicht mehr bei jeder Suche für jedes Produkt gemacht werden.
Achtung: die im Netz zu findenden Soundex-Algorithmen sind meist auf Englisch zugeschnitten, für Deutsch muß man ein paar Anpassungen vornehmen.