Thomas G.: Ähnlichste Ergebnisse aus einer datenbank finden

Hallo,

ich habe in einem script, dass nach der eingabe eines Begriffes aus einer Datenbank die Ergebnisse auslesen soll. Soweit funktioniert auch alles. Das ganze geschieht mit einem textfeld zur eingabe, dann eine Selectbox würde bei so vielen einträgen (momentan über 250, werden aber ständig mehr) unübersichtlich werden. Dies sind jedoch alles fachbegriffe, bei denen man sich leicht vertippen oder irren könnte.

Nun möchte ich, dass im Falle dessen, dass die Eingabe sich mit keinem korrekten Begriff deckt, die 3 ähnlichsten aufgelistet werden. (Auf keinen fall möchte ich irgendwetwas tuen wie in der Art die häufigsten Vertipper in die Datenbank einzutragen). Sollte jemand eine gute Idee haben oder etwas nützliches wissen, würde ich micht freuen, es zu hören.

Herzlichen Dank im Voraus
Thomas G.

  1. ein kleiner Nachtrag, ist vielleicht gut zu wissen, die db ist eine MySQL Datenbank

  2. Nun möchte ich, dass im Falle dessen, dass die Eingabe sich mit
    keinem korrekten Begriff deckt, die 3 ähnlichsten aufgelistet werden.

    SELECT begriff FROM table WHERE SUBSTRING(SOUNDEX(begriff),1,3)=SUBSTRING(SOUNDEX('[suchbegriff]'),1,3) LIMIT 3;

    Mit dem dritten Parameter von SUBSTRING() läßt sich die "fuzzyness" ein wenig steuern.

    1. Ergänzung:

      PHP selbst kennt 4 Funktionen, die sich mit ("akkustischen") Ähnlichkeiten von strings befassen:

      • levenshtein()
      • metaphone()
      • similar_text()
      • soundex()