Zum Inhalt springen

MySQL Soundex


kills

Empfohlene Beiträge

Hallo zusammen,

ich bin gerade dabei ein Such Modul für meine Webseite zu bauen.

Jetzt steh ich vor dem SQL den ich dazu benötige. Ich möchte diesen so gestalten, dass auch bei kleineren Tippfehlern ein "gutes" Ergebnis erscheint.

Ursprünglich sah mein SQL so aus:

SELECT 

           id

          FROM 

           rex_article 

          WHERE 

          (

            name LIKE "%'. $search .'%" or 

            catname LIKE "%'. $search .'%" or 

            keywords LIKE "%'. $search .'%" or 

            descriptionLIKE "%'. $search .'%" 

          )

          AND clang='. $REX['CUR_CLANG'] .'

          LIMIT 40
Jetzt wollte ich via Soundex diese "Tippfehlerkorrektur" einbauen
SELECT 

           id

          FROM 

           rex_article 

          WHERE 

          (

            SOUNDEX(name) = SOUNDEX("'. $search .'") or 

            SOUNDEX(catname) = SOUNDEX("'. $search .'") or 

            SOUNDEX(keywords) = SOUNDEX("'. $search .'") or 

            SOUNDEX(description) = SOUNDEX("'. $search .'") 

          )

          AND clang='. $REX['CUR_CLANG'] .'

          LIMIT 40

Leider findet meine Suche mit Soundex noch weniger, als nur mit LIKE...

Wo ist mein Denkfehler in der Geschichte? Muss ich das Soundex auch noch irgendwie mit einem LIKE kombinieren?

Viele Grüße,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider findet meine Suche mit Soundex noch weniger, als nur mit LIKE...

Wo ist mein Denkfehler in der Geschichte? Muss ich das Soundex auch noch irgendwie mit einem LIKE kombinieren?

Viele Grüße,

Markus

Das Problem ist das Soundex den ersten Buchstaben nicht als Zahl darstellt sondern als Buchstabe.


soundex('Hello');

ergibt also H400

Wenn jetzt aber in einer deiner Spalten die du durchsuchts das 'Hello' nicht gerade am Anfang steht wird es vollständig als Zahl repräsentiert. Somit solltest du den Buchstaben bei deiner Suche nicht berücksichtigen.

Außerdem empfehle ich auch hier einen LIKE String vergleich weil sonst die Texte absolut identisch sein müssten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist das Soundex den ersten Buchstaben nicht als Zahl darstellt sondern als Buchstabe.

[...]

Außerdem empfehle ich auch hier einen LIKE String vergleich weil sonst die Texte absolut identisch sein müssten

Das ist kein Problem, sondern der Standard Soundex-Algorithmus ;)

Und das LIKE ist eigentlich nicht nötig, weil er ja Soundex verwendet. (siehe hier). MySQL Soundex verwendet aber nicht nur 4 Zeichen Soundex-Code, sondern beliebig lange Codes (Also wirklich jeden Buchstaben im Wort ersetzen, aber min. 4 Zeichen lang. Friseur und Friseurin ergeben also bei MySQL M626 und M6265).


...

SUBSTRING(SOUNDEX(name), 1, 4) = SUBSTRING(SOUNDEX(search), 1, 4)

...

sollte das Problem beheben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi zusammen,

Danke für die Mühe!


...

SUBSTRING(SOUNDEX(name), 1, 4) = SUBSTRING(SOUNDEX(search), 1, 4)

...

Das kann doch so gar nicht gehen oder?

Mein Feld indem ich suche ist vom Type TEXT.

Mit den o.g. SOUNDEX geht es doch nur, wenn die ersten 4 Zeichen des Strings dem Suchstring entsprechen oder?

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...