Roger: (Datenbank) suchmaschine / suche / trefferquote

moin!

ich habe eine Adressdatenbank aufgebaut. in ihr befinden sich die orte (einzelne adressfelder für plz, straße, etc.) und auch kurztexte zu den orten. so ne art reiseführer.
jetzt möchte ich ein einfaches suchformular basteln, welches mir zunächst erlaubt, nach orten (oder plz) zu suchen. allerdings grüble ich gerade über die technik nach. klar kann ich das so machen, dass, wenn jemand "Dorf" eingibt nur nach "dorf" im ort-feld gesucht wird. viel schöner ist es aber, wenn die suchmaschine nach "dorf", "*dorf" und "dorf*" sucht und das ganze per trefferquote ausgibt. die sql-syntax (mysql) dürfte da nicht schwierig sein - zumindest um die objekte zu finden.
wie aber wird die trefferquote dazu ermittelt? der ort "Dorf" dürfte ja 100% haben, wie ist es dann aber bei "Battgendorf"? Welche Prozentzahl ergibt sich dann?

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. Hallo Roger,

    Bei *dorf, dorf* und dorf hilft dir LIKE.
    SELECT * FROM tabelle WHERE ort LIKE "%dorf%;

    Du kannst dann in der while-Schleife, die die Ergebnisse ausgibt, die Relevanz nach eigenen Kriterien berechnen zb. so.
    (ich behaupte mal, ort ist in $data['ort'])
    $datalength = strlen($data['ort']); // die laenge des gefundenen ortsnamens
    $dorflength = strlen('dorf');
    $relevanz   = $datalength - $dorflength; //wieviele Buchstaben Unterschied?
    Das Beispiel ist sicher nicht der Weisheit letzter Schluss, aber irgendwo musst du ja anfangen.

    bei "Battgendorf"? Welche Prozentzahl ergibt sich dann?

    Die Kriterien musst du, wie schon gesagt, selbst festlegen
    Bei meiner Beispielmethode haette "Battgendorf" eine Relevanz von 7. Beziehe das prozentual auf eine zu definierende Groesse und du hast dein Ergebnis.

    Dieter