Michael Schröpl: Volltextsuche mit Inner Joins

Beitrag lesen

Hi myMojito,

ich befasse mich gerade mit einer Volltextsuche.

in welchem Universum befindest Du Dich? MATCH ist IMHO etwas Proprietäres - welche Datenbank und welche Version? (mySQL 3.23+, flüstert mir gerade meine Kristallkugel zu ...)

WHERE MATCH (lv2.name, hb.produkt_bezeichnung, hb.produkt_zeichnung, hb.bestell_nr, hb.p_index, hb.vds_nr, hb.vds_klasse) AGAINST ('$term')
Wenn ich jedoch in die MATCH-Anweisung lv2.name (für den Namen der Kategorie) zuweise bekomme ich eine Fehlermeldung: Wrong arguments to MATCH.

Um MATCH überhaupt anwenden zu dürfen, brauchst Du entsprechend definierte FULLTEXT-Indexe. Mir wäre neu, daß diese auf mehr als einer Tabelle liegen dürfen.

Was Du tun kannst, ist, Deine MATCH-Klausel in ein OR verschiedener MATCHes über verschiedene Tabellen zu zerlegen.
Ich kann Dir allerdings nicht sagen, wie performant das dann wird - es kann durchaus funktionieren, ich rate aber zu exzessiver Verwendung von EXPLAIN bei der Kontrolle, ob die gewünschten Indexe auch wirklich angesprochen werden. Diese mußt Du auf jeden Fall erst mal anlegen.

Die Lösung Deines Problems beginnt also - wie so oft - im DDL-Teil Deiner Tabellen, nicht erst in der Abfrage.

Viele Grüße
      Michael

--
T'Pol: I meant no insult.
V'Lar: Of course not. You're simply speaking your mind ... as you always have.