Hallo,
Deinen Artikel habe ich gelesen. Vielen Dank.
ich bin wieder ein Stück weiter, aber noch nicht am Ziel,:
1. So ist das SQL erst einmal richtig (Klammern drum und ohne Schlüsselwörter)
(SELECT col1_in_tab1, MATCH (col1_in_tab1)
AGAINST('text hallo') as Relevanz
FROM tab1 WHERE MATCH (col1_in_tab1)
AGAINST('text hallo'))
UNION
(SELECT col1_in_tab2, MATCH (col1_in_tab2)
AGAINST('text') as Relevanz
FROM tab2 WHERE MATCH (col1_in_tab2) AGAINST('text'))
ORDER BY Relevanz DESC
Das Ergebnis ist wie gewünscht
ABER
ich hatte doch tatsächlich die Boolean-Option vergessen. Darum erst einmal das Experiment ohne UNION
SELECT col1_in_tab1, MATCH (col1_in_tab1)
AGAINST('text hallo' IN BOOLEAN MODE) as Relevanz
FROM tab1 WHERE MATCH (col1_in_tab1)
AGAINST('text hallo' IN BOOLEAN MODE)
ORDER BY Relevanz DESC
Das Ergebnis ist, das die ganze Relevanz-Spalte mit 1 gefüllt ist (Dieses Phänomen ist auch in Deinem Artikel beschrieben). Ein findiger User kam dann auf folgende Idee:
SELECT col1_in_tab1, MATCH (col1_in_tab1)
AGAINST('text hallo') as Relevanz
FROM tab1 WHERE MATCH (col1_in_tab1)
AGAINST('text hallo' IN BOOLEAN MODE) HAVING Relevanz > 0.2
ORDER BY Relevanz DESC
Das Ergebnis ist nun wieder richtig. ABER nun habe ich das ganze in mein richtiges SQL getan und ein Detail übersehen...
(SELECT t1.col1_in_tab1, t3.col1_in_tab3 MATCH (t1.col1_in_tab1, t3.col1_in_tab3)
AGAINST('text hallo') as Relevanz
FROM tab1 t1, tab3 t3 WHERE MATCH (t1.col1_in_tab1, t3.col1_in_tab3)
AND t1.id=t3.id_t1
AGAINST('text hallo' IN BOOLEAN MODE) HAVING Relevanz > 0.2)
UNION
(SELECT col1_in_tab1, col2_in_tab1 MATCH (col1_in_tab1, col2_in_tab1)
AGAINST('text hallo') as Relevanz
FROM tab1 WHERE MATCH (col1_in_tab1, col2_in_tab1)
AGAINST('text hallo' IN BOOLEAN MODE) HAVING Relevanz > 0.2)
ORDER BY Relevanz DESC
Im ersten Select mache ich schon eine Volltextsuche über zwei Tabellen und nicht nur über eine Tabelle. Wenn ich die beiden SQLs seperat ausführe, erhalte ich im zweiten ein richtiges Ergebnis, und im ersten den besagten Fehler:
#1210 - Incorrect arguments to MATCH
Gruss, Mario