[MySQL] Volltextsuche

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
ALTES PROBLEM GELÖST.
NEUES PROBLEM FOLGT.


Hallo,

da ich das alte Problem gelöst habe, die Lösung allerdings ein neues Problem verursacht, zu welchem der Titel des Threads ebenfalls gut passt, editiere ich einfach mal das alte Problem weg und schreibe das neue nun hier hin. :)

Also, ich möchte Nutzern die Optionen anbieten, entweder col1 oder col2 oder beide zu durchsuchen. Ich habe also drei Fälle:

1. MATCH (`col1`) AGAINST ('expr')
2. MATCH (`col2`) AGAINST ('expr')
3. MATCH (`col1`, `col2`) AGAINST ('expr')

Wenn ich nun jeweils einen FULLTEXT-Index über col1 und col2 mache, dann funktioniert MATCH (`col1`, `col2`) AGAINST ('expr') nicht. Wenn ich aber nun einen einzigen FULLTEXT-Index über beide Spalten mache, dann funktioniert MATCH (`col1`) AGAINST ('expr') und MATCH (`col2`) AGAINST ('expr') nicht mehr.

Die Lösung des Problems sind nun ja drei FULLTEXT-Indizes:

1. FULLTEXT(`col1`)
2. FULLTEXT(`col2`)
3. FULLTEXT(`col1`, `col2`)

Meine Frage ist nun: Ist das so okay? Ich finde es... ein wenig komisch. Für mich sieht das nämlich irgendwie so aus, als ob da irgendwo Leistung verschenkt wird, weil irgendwie ist da ja etwas doppelt. Beide Spalten haben jetzt ja zweimal ein FULLTEXT-Index. Muss man das so machen oder gibt es da ein Trick, wie man das alles mit weniger Indizes erledigen kann?
 
Zuletzt bearbeitet:
Auch wenn der Thread schon eine Woche alt ist:

Man kann das nicht weiter optimieren. Steht aber auch im MySQL Manual, dass man für jede Kombination einen separaten Fulltext-Index anlegen muss.

Stimmt allerdings, dass das ein bisschen verwirrend ist, weil bei INDEX, PRIMARY und UNIQUE diese Regel ja nicht zutrifft.
 
Ich weiß es steht im MySQL-Manual.
Was mich dann aber dazu bewegt hat, diesen Thread zu eröffnen, ist die Tatsache, dass in phpMyAdmin eine fette große leutendrote Box nun ist, die mich daraufhin weiß, dass eine Spalte nicht zwei FULLTEXT-Indizes haben sollte...
Wieso macht das Programm das, obwohl es keine andere Lösung gibt? Verwirrend... :confused_alt:
 
Zuletzt bearbeitet:
Zurück
Oben