Marc Reichelt: MySQL: Suche mit MATCH (...) AGAINST

Beitrag lesen

Hallo nochmals,

nun habe ich noch ein Problem. Wenn die Suche über MATCH AGAINST erfolgen soll (mit IN BOOLEAN MODE), sollte ein FULLTEXT-Index existieren.
Soweit an sich kein Problem - aber die Spalten stammen von mehreren Tabellen.

Ich habe im Beispiel zwei Tabellen.

Tabelle 1: 'hardware'
Spalten:
    id bigint(20) unsigned auto_increment primary key,
    name varchar(255) NOT NULL,
    vendor\_id bigint(20) unsigned NOT NULL

Tabelle 2: 'vendors'
Spalten:
    id bigint(20) unsigned auto_increment primary key,
    name varchar(255) NOT NULL UNIQUE

Nun ist 'hardware' zu 'vendors' über 'hardware.vendor_id = vendors.id' verknüpft.
Ich möchte nun also gewissermaßen einen Index über 'hardware.name' und 'vendors.name' legen. Ist das möglich?

Beispiel für die Suche:
Es gibt einen Eintrag mit hardware.name = 'NVIDIA' und vendors.name = 'GeForce 6800 GT'.

Wenn der Benutzer nun nach 'NVIDIA 6800' sucht, sollte die entsprechende Spalte in der Tabelle 'hardware' gefunden werden.

Wie realisiere ich diese Suche möglichst einfach und doch performant?
Ist es vielleicht besser, einen "eigenen Index" in der Tabelle 'hardware' anzulegen, und diesen mitzuführen?

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)