mysql Tabelle durchsuchen

bazlivec

Mitglied
Hallo,

ich habe folgendes Anliegen:

Meine Tabelle besteht aus rund 10 Spalten: "Name", "pos1", "pos2", "pos3" ...
Im ersten Suchdurchlauf sollen nur die Namen durchsucht werden, jedoch müssen sie nicht 100%ig mit der Sucheingabe übereinstimmen. Das am besten passende Ergebnis soll ausgeliefert werden. (Sucheingabe per Formular..).

Beispiel:
Tabelleninhalte (Spalte 1 (name)): Meider, Kaider, Schneider, Weider
Eingabe: scnider
Ausgabe: Schneider

Das am besten passende Ergebnis soll also ausgegeben werden. So sollen falsche/andere Schreibweisen dennoch ein Ergebnis erbringen, ebenso bei Namen die aus mehreren Teilen bestehen (nur einer muss dann eingegeben werden).

Hiermit habe ich es bereits versucht:
PHP:
$abfrage = "SELECT name FROM tabelle WHERE name LIKE 'Schn%'"
Leider ist das "%" nur ein Platzhalter und der Rest muss immer genau übereinstimmen.

Meine Frage: Gibt es eine Möglichkeit das zu Lösen? "ALMOST THE SAME" oder so :p?

Vielen Dank und Gruß
bazlivec
 
Du kannst dir natürlich mit einigem Aufwand Funktionen bauen, die Buchstaben für Buchstaben prüfen und Übereinstimmungen suchen. Wenn du aber eine fixe Liste hast, nach deren Einträgen gesucht werden kann (Bspw. Array("Meier", "Schneider", "Hofer")) kannst du dir eine Art Map bauen, wo du die häufigsten falschen Schreibweisen abfängst und auf die entsprechenden richtigen Einträge weiterverweist (Meeir, Meir, Meyer etc. zeigen dann auf Meier, Scneider, Shneider, etc. auf Schneider und so weiter). Dynamisch ist das aber etwas umständlich, da keine Funktion von sich aus weiss, welches nun die gängigsten Fehler in einem Namen sind.
 
Hallo,

du könntest es mal mit SOUNDEX() versuchen, denke bei deinem Beispiel mit scneider sollte das richtige Ergebnis kommen, ganz trauen würd ich dieser funktion allerdings nicht - glaube auch sie ist eher auf Englishe Sprache ausgerichtet, aber ja glauben heißt nix wissen.
 
Zurück