Jonas: MYSQL Einträge auf hohe Übereinstimmung prüfen

Guten Tag allerseits,

Ich wäre froh um eure Hilfe. Ich habe eine MYSQL Datenbank mit ein paar 1000 Einträgen. Mittels PHP wird die Datenbank nach einem Suchwort durchsucht. Nun würde ich die Suchfunktion gerne erweitern. Soll heissen, es wird nicht nur der Wert ausgegeben der 100% übereinstimmt mit dem Suchwort, sondern auch jener, der vielleicht nur 90% übereinstimmt.

Bespiel:
Gesucht wird Beyonce
In der Datenbank ist Beyoncé gespeichert.
Denoch wird dieser Wert als Treffer ausgegeben.

Ich möchte die Datenbank jedoch nicht mit dem Wert "Beyonce" erweitern und auch nicht den Suchstring konvertieren.

Ich kenne LIKE bereits. Ich möchte das aber schöner lösen, hat jemand eine Idee? Wäre super!

Vielen Dank!

  1. Hi Jonas!

    Bespiel:
    Gesucht wird Beyonce
    In der Datenbank ist Beyoncé gespeichert.
    Denoch wird dieser Wert als Treffer ausgegeben.

    Klappt bei mir mit utf8_general_ci und utf8_unicode_ci problemlos.

    [...] hat jemand eine Idee?

    Ich bin nicht der Datenbankprofi, aber wenn andere dir weiterhelfen sollen, dann musst du mehr Informationen bereitstellen, z. B. verwendete Zeichekodierung, MySQL-Version, wie die Daten abgespeichert werden (also wie sie _wirklich_ in der DB stehen), evtl. wie das Suchstatement zusammengesetzt wird,...

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Vielen Dank für eure Hilfe. Hatte gehofft, dass es eine "edle" Lösung gibt, scheint aber nicht so. Dennoch vielen Dank!

  2. echo $begrüßung;

    Ich wäre froh um eure Hilfe. Ich habe eine MYSQL Datenbank mit ein paar 1000 Einträgen. Mittels PHP wird die Datenbank nach einem Suchwort durchsucht. Nun würde ich die Suchfunktion gerne erweitern. Soll heissen, es wird nicht nur der Wert ausgegeben der 100% übereinstimmt mit dem Suchwort, sondern auch jener, der vielleicht nur 90% übereinstimmt.

    Mit geht aus deinen Worten nicht ganz klar hervor, was der aktuelle Ist-Zustand und was dein Wunsch ist.

    Gesucht wird Beyonce
    In der Datenbank ist Beyoncé gespeichert.
    Denoch wird dieser Wert als Treffer ausgegeben.

    Das liegt an der verwendeten Kollation. Die definiert, wie Vergleiche gehandhabt werden. Wenn du eine haargenaue Suche brauchst, nimm eine bin-Kollation oder das Schlüsselwort BINARY.

    Wenn du eine unscharfe Suche abseits der Möglichkeiten einer Kollation brauchst, musst du zunächst einmal definieren, was unter welchen Umständen gefunden werden soll. Es gibt einige String-Funktionen (z.B. SOUNDEX), die ähnliche Wörter finden soll, die sind jedoch meist spezialisiert auf die englische Aussprache.

    echo "$verabschiedung $name";