tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
557
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Michael_K Michael_K ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Ort
    Augsburg
    Beiträge
    25
    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 :
    1
    
    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
     

  2. #2
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Du könntest die Sonderzeichen für die Suche mit Replace umwandeln.

    Code :
    1
    
    REPLACE(`page_title`, 'ä', 'ä')
     

  3. #3
    Michael_K Michael_K ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Ort
    Augsburg
    Beiträge
    25
    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?
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    der Joker % ist bei der Volltextsuche nicht vorgesehen, würd ich meinen.
     

  5. #5
    Michael_K Michael_K ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Ort
    Augsburg
    Beiträge
    25
    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.
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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 :
    1
    2
    3
    
    "SELECT * FROM page 
      WHERE MATCH (page_keywords, page_description, page_teaser, page_headline, page_title, page_text1) 
        AGAINST ('\"".$searchinput."\"' IN BOOLEAN MODE)"
     

  7. #7
    Michael_K Michael_K ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Ort
    Augsburg
    Beiträge
    25
    Tausend Dank, Sven! Mit Deiner Abfrage läuft alles so, wie es soll.
     

Ähnliche Themen

  1. MYSQL abfrage durch Formular
    Von Manuel324 im Forum PHP
    Antworten: 8
    Letzter Beitrag: 15.05.09, 16:24
  2. Antworten: 2
    Letzter Beitrag: 14.11.08, 17:08
  3. Thickbox wird durch andere Scripte gestört
    Von qde im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 12.11.08, 23:10
  4. MySQL: Abfrage auf 2 Tabellen durch join
    Von Saskia21 im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 14.03.08, 14:38
  5. Antworten: 5
    Letzter Beitrag: 28.10.05, 11:26