Hallo.
Ich habe folgendes Problem:
Ich möchte eine Volltextsuche in ein PHP-Script implementieren. Dafür habe ich die entsprechende Spalte "definition" als FULL TEXT definiert. Als Datentyp ist TEXT gesetzt. Ich möchte aber nicht, dass nach einzelnen Wörtern des Suchstrings gesucht wird, sondern es müssen in den Datensätzen alle Wörter des Suchstrings vorkommen. Gibt man also "Insel Pazifik" in das Suchfeld ein, müssen nur Datensätze ausgegeben werden, in denen diese beiden Begriffe zusammen vorkommen, z.B:
"Die Howlandinsel ist eine kleine Insel im Pazifik."
"Schiffsbrüchige wurden von einer einsamen Insel im Pazifik gerettet."
usw.
Die Reihenfolge ist dabei egal.
Dafür möchte ich den Operator "+" verwenden ('+Insel +Pazifik'), aber wie kann ich dieses Pluszeichen richtig an die Suchvariable übergeben? Ich habe es folgendermaßen versucht, aber das geht irgendwie nicht, denn es wird kein Datensatz gefunden:
$abfrage = "select * from tabelle
WHERE MATCH (definition) AGAINST ('implode(' +', explode(' ', $suche))' IN BOOLEAN MODE);
Die Suchvariable vom input-Feld ist am Anfang des Scripts bereits getrimt:
$suche = trim($_GET["suchbegriff"])
Ich dachte, vielleicht gilt dieses trim nicht mehr und habe in den Code ein weiters trim hinzugefügt, aber es geht trotzdem nicht:
MATCH (definition) AGAINST ('trim(implode(' +', explode(' ', $suche)))' IN BOOLEAN MODE);
Was mache ich falsch?
Ich habe folgendes Problem:
Ich möchte eine Volltextsuche in ein PHP-Script implementieren. Dafür habe ich die entsprechende Spalte "definition" als FULL TEXT definiert. Als Datentyp ist TEXT gesetzt. Ich möchte aber nicht, dass nach einzelnen Wörtern des Suchstrings gesucht wird, sondern es müssen in den Datensätzen alle Wörter des Suchstrings vorkommen. Gibt man also "Insel Pazifik" in das Suchfeld ein, müssen nur Datensätze ausgegeben werden, in denen diese beiden Begriffe zusammen vorkommen, z.B:
"Die Howlandinsel ist eine kleine Insel im Pazifik."
"Schiffsbrüchige wurden von einer einsamen Insel im Pazifik gerettet."
usw.
Die Reihenfolge ist dabei egal.
Dafür möchte ich den Operator "+" verwenden ('+Insel +Pazifik'), aber wie kann ich dieses Pluszeichen richtig an die Suchvariable übergeben? Ich habe es folgendermaßen versucht, aber das geht irgendwie nicht, denn es wird kein Datensatz gefunden:
$abfrage = "select * from tabelle
WHERE MATCH (definition) AGAINST ('implode(' +', explode(' ', $suche))' IN BOOLEAN MODE);
Die Suchvariable vom input-Feld ist am Anfang des Scripts bereits getrimt:
$suche = trim($_GET["suchbegriff"])
Ich dachte, vielleicht gilt dieses trim nicht mehr und habe in den Code ein weiters trim hinzugefügt, aber es geht trotzdem nicht:
MATCH (definition) AGAINST ('trim(implode(' +', explode(' ', $suche)))' IN BOOLEAN MODE);
Was mache ich falsch?