FULLTEXT-Suche mit loogischem UND (mySQL)
albert
- datenbank
hallo,
ich hab ein riesen problem:
zunächst:
Meine MySQL-Tabelle in der ich suchen möchte, ist wie folgt definiert:
CREATE TABLE test (
art_id INT UNSIGNED NOT NULL,
inhalt TEXT,
PRIMARY KEY(art_id),
FULLTEXT(inhalt, keywords)
);
Meine Abfrage: in etwa:
SELECT art_id, MATCH (inhalt, keywords) AGAINST ('".$look_for."') FROM test WHERE MATCH (inhalt, keywords) AGAINST ('".$look_for."')
Problem:
Nun will ich, daß Wörter, die in $look_for stehen (zB. "Fenster kaputt neupreis") mit AND verknüpft werden. standardmäßig mach er nämlich ein OR.
Einfach '+' benutzen geht leider net, obwohl in der referent steht:
"+wort bedeutet, dass das Wort in jeder zurückgegebenen Zeile enthalten sein muss. "
die einzige lösung scheint das ausweichen auf "LIKE x AND LIKE y" zu sein was aber zu langsam wäre.
man findet leider nur wenig dazu im netz was wirklich hilft, aber ich kann doch nicht der einzige sein der die volltextsuche von sql benutzt und eine UND verknüpfung verwenden möchte...
danke
albert
Hello,
Einfach '+' benutzen geht leider net, obwohl in der referent steht:
"+wort bedeutet, dass das Wort in jeder zurückgegebenen Zeile enthalten sein muss. "
Habe gerade gelesen, dass das erst ab MySQL >= 4.0 funktionieren soll. Welche Version hast Du im Einsatz?
Liebe Grüße aus http://www.braunschweig.de
Tom
Habe gerade gelesen, dass das erst ab MySQL >= 4.0 funktionieren soll. Welche Version hast Du im Einsatz?
client API version 4.0.14. daran dürftes net liegen.
aber trotzdem danke....
albert
Hallo,
Habe gerade gelesen, dass das erst ab MySQL >= 4.0 funktionieren soll. Welche Version hast Du im Einsatz?
client API version 4.0.14. daran dürftes net liegen.
Dann liegts am fehlenden IN BOOLEAN MODE modifier.
SELECT art_id, MATCH (inhalt, keywords) AGAINST ('".$look_for."' IN BOOLEAN MODE) FROM test WHERE MATCH (inhalt, keywords) AGAINST ('".$look_for."' IN BOOLEAN MODE)
http://www.mysql.com/doc/en/Fulltext_Search.html
viele Grüße
Axel