phpbar.de logo

Mailinglisten-Archive

=?iso-8859-1?Q?Boolean=20Suche=20=FCber=202=20Tabellen=20&=20Relevanz?=

Boolean Suche über 2 Tabellen & Relevanz

mysql-de_(at)_lists.bttr.org mysql-de_(at)_lists.bttr.org
30 Sep 2002 13:58:10 UT


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