MySQL: Volltextsuche mit Wildcards oder andere Suchmethode?



  • Guten Tag,

    ich bin gerade dabei mit PHP5 und MySQL5 eine Suche über eine größere Datenbank zu programmieren.

    Mein erster Ansatz war folgender:

    SELECT
      feld1,
      feld2
    FROM
      tabelle
    WHERE
        feld1 LIKE "%suchbegriff%"
      OR
        feld3 LIKE "%suchbegriff%"
    

    Das funktioniert zwar, jedoch sehr langsam (bei vielen Feldern und großen Datenmengen). Macht ja auch Sinn, dass es nicht schnell ist.

    Um es zu beschleunigen, habe ich einen FULLTEXT-Index über alle zu durchsuchenden Spalten angelegt und folgendermaßen gesucht:

    SELECT
      feld1,
      feld2
    WHERE
      MATCH(feld1,feld3) AGAINST("suchbegriff*" IN BOOLEAN MODE)
    

    Das ist nun deutlich schneller, allerdings findet er nur Prefixe und keine eingeschlossenen Wörter. Also: "mar" findet "Marketing" aber nicht "Wochenmarkt".

    Ich bin nun also auf der Suche nach einer schnellen Methode, um Wörter und Teilwörter in den Datensätzen zu finden.

    Hat einer von euch damit bereits Erfahrungen gemacht und kann mir weiterhelfen? Vielleicht kann man auch die erste Methode in irgend einer Form beschleunigen?

    Ich habe den ganzen heutigen Tag damit verbracht Google durchzuwühlen und das MySQL-Handbuch zu lesen, habe jedoch keine brauchbare Lösung gefunden.

    Vielen Dank!
    Daniel


Anmelden zum Antworten