MySQL: Such-Abfrage durch Umlaute gestört?

Michael_K

Mitglied
Hallo,

ich bastle an einer recht simplen Suchfunktion für eine MySQL-Tabelle. Die Inhalte werden überwiegend mit dem Editor TinyMCE verfasst, der die Angewohnheit hat, Sonderzeichen wie Umlaute in ihre entsprechenden Entities umzuwandeln, bevor sie gespeichert werden.

Damit eine Suche nach einem Wort, welches ein Sonderzeichen enthält, erfolgreich verläuft, wandle ich die Zeichen der Suchanfrage ebenfalls in die Entities um. Nun scheint sich MySQL allerdings an genau diesen Zeichen zu stören - wenn ich beispielsweise nach einem Wort mit Umlaut suche, erscheinen viele Suchergebnisse, die dieses Wort überhaupt nicht enthalten.

Meine Datenbankabfrage sieht etwa so aus:
Code:
SELECT * FROM page WHERE MATCH (page_keywords, page_description, page_teaser, page_headline, page_title, page_text1) AGAINST ('%".$searchinput."%')

Hat jemand eine Idee, warum MySQL sich an diesen Zeichen stört, und wie ich das Problem lösen kann?

Viele Grüße
Michael
 
Du meinst ich soll dauerhaft alle Sonderzeichen in der Datenbank umwandeln? Das ist leider kaum machbar, da die Inhalte der Seite ständig aktualisiert werden. TinyMCE würde die Zeichen in neuen Einträgen ja wieder als Entities speichern, ebenso Inhalte, die nach meinem Umwandeln erneut bearbeitet werden. Um das zu vermeiden, müsste ich also am Tiny rumpfuschen, oder an den Funktionen, die die Einträge speichern. Das ist mir beides zu riskant ... geht es nicht einfacher?
 
Ups, danke für den Hinweis. Kommt davon, wenn man zu faul zum tippen ist und blind aus einem anderen Query kopiert ...
An den Suchergebnissen ändert das aber leider nichts.
 
Hab mal kurz ein wenig herumprobiert, es scheint wohl, dass allein der Umlaut in seiner Umschreibung schon ausreicht, um eine Relevanz>0 zu erzeugen, bei allen Datensätzen, die diese Umschreibung enthalten.

Probiers mal so:

Code:
"SELECT * FROM page 
  WHERE MATCH (page_keywords, page_description, page_teaser, page_headline, page_title, page_text1) 
    AGAINST ('\"".$searchinput."\"' IN BOOLEAN MODE)"
 
Zurück