Mailinglisten-Archive |
Hallo, ich mache eine Bool'sche Volltextabfrage über 2 Tabellen. Allerdings kommt es mir vor als wenn die Relevanzsortierung nicht richtig funktioniert bzw. ich was falsch mache. Ich mache folgende Abfrage: SELECT * FROM tbl1,tbl2 WHERE tbl1.ID = tbl2.id_tbl1 AND MATCH (tbl1.Spalte3,tbl2.Spalte2) AGAINST ('Hallo Heute' IN BOOLEAN MODE) Dabei steht in tbl1.ID = Die normale AutoIncrement ID dieser Tabelle tbl2.id_tbl1 = die ID eines Eintrags der 1. Tabelle tbl1.Spalte3 & tbl2.Spalte2 = normale FullText-Index Spalten Die Sql-Abfrage soll mir also die Zeilen liefern in denen in Spalte "tbl1.Spalte3" und/oder in Spalte "tbl2.Spalte2" (wobei die Spalten "tbl1.ID" und "tbl2.id_tbl1" gleich sein müssen) die Wörter "Hallo" und/oder "Heute" vorkommen. Nun bekomme ich auch ein Ergebnis. Allerdings wird mir eine geringere Relevanz angezeigt, bei den Zeilen in denen sowohl in der Spalte "tbl1.Spalte3" als auch in der Spalte "tbl2.Spalte2" beide Wörter vorkommen. Also sag ich mal so: Steht in "tbl1.Spalte3" 'Heute' und in "tbl2.Spalte2" 'Hallo' so wird dieses Ergebnis in der Relevanz geringer eingestuft als wenn nur in der 1.Spalte 'Heute' steht un in der 2.Spalte nichts. Das ist doch eigendlich unlogisch oder? Ist meine SQL-Anweisung falsch oder was geht hier schief? Nachtrag: Wenn ich in einer Tabelle mit mehreren Spalten eine FullText-Suche machen will muss ich ja alle FullText-Spalten in meinen FullIndex einbeziehen. Wenn ich nun noch die Suchanfrage dynamisch erstelle in der z.B. die Wahl zwischen 3 Spalten besteht. Also sowohl nur in einer in zwei oder in allen drei Spalten nach einem Wort gesucht werden soll, so muss ich ja mindestens 7 Indexe setzen. 1.index = Spalte1&Spalte2&Spalte3 2.index = Spalte1&Spalte2 3.index = Spalte1&spalte3 4.index = Spalte2&Spalte3 5.index = Spalte1 6.index = Spalte2 7.index = Spalte3 Diese Eigenheit von MySql könnte es ja nun auch sein das ich bei meinem oben beschriebenen Problem keine vernünftige Relevanz bekommne. Ich weis es leider nicht genau ob es damit zusammenhängt. Allerdings kann ich doch nur Spalten einer Tabelle mit in einen Index setzen und nicht mehrere Tabellen "verknüpfen". Geht das doch irgendwie? Gibt es eine SQL-Anweisung die diese Problem beheben kann? Wenn alles nicht geht, so frage ich im Allgemeinen: Kann MySql eine vernünftige FullText-Abfrage über mehrere Tabellen machen? --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive