albert: FULLTEXT-Suche mit loogischem UND (mySQL)

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. 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

      1. 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