MySQL unterstützt eine andere Form der Volltextsuche, den sogenannten booleschen Modus. Auf boolesche Weise können Details bereitgestellt werden über:
Das auszuschließende Wort; , auch wenn es andere angegebene Wörter enthält);
2. Anordnungstipps (bestimmte Wörter als wichtiger als andere angeben, wobei wichtigere Wörter höher eingestuft werden); 🎜>
4. Einige andere Inhalte. Auch ohne FULLTEXT-Index verwendbar Der boolesche Ansatz unterscheidet sich von der bisher verwendeten Volltextsuchsyntax dadurch, dass er auch dann verwendet werden kann, wenn kein FULLTEXT-Index definiert ist. Dies ist jedoch ein sehr langsamer Vorgang (seine Leistung nimmt mit zunehmender Datenmenge ab). Um die Funktion von IN BOOLEAN MODE zu demonstrieren, geben Sie ein einfaches Beispiel: Eingabe:Ausgabe:
select note_text from productnotes where match(note_text) against('anvils' in boolean mode);
Analyse: Diese Volltextsuche ruft alle Zeilen ab (es gibt zwei Zeilen), die das Wort „heavy“ enthalten. Das Schlüsselwort IN BOOLEAN MODE wird verwendet, es wird jedoch tatsächlich kein boolescher Operator angegeben, sodass das Ergebnis dasselbe ist, als ob kein boolescher Modus angegeben wäre.
Unterschied im Verhalten von IN BOOLEAN MODE Obwohl die Ergebnisse dieses Beispiels die gleichen sind wie ohne IN BOOLEAN MODE, gibt es einen wichtigen Unterschied im Verhalten (auch wenn er in diesem speziellen Beispiel nicht gezeigt wird).
Um Zeilen zu finden, die „heavy“, aber keine Wörter enthalten, die mit „rope“ beginnen, verwenden Sie die folgende Abfrage: Eingabe:Ausgabe:
select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);
Analyse: Diesmal wird nur eine Zeile zurückgegeben. Diesmal wird immer noch das Wort „heavy“ gefunden, aber „-rope*“ weist MySQL ausdrücklich an, Zeilen auszuschließen, die „rope*“ enthalten (jedes Wort, das mit „rope“ beginnt, einschließlich „ropes“), weshalb die erste Zeile im vorherigen Beispiel ausgeschlossen wurde.
Codeänderungen in MySQL 4.x erforderlich. Wenn Sie MySQL 4.x verwenden, gibt das obige Beispiel möglicherweise keine Zeilen zurück. Dies ist ein Fehler in der Handhabung des *-Operators. Um dieses Beispiel mit MySQL 4.x zu verwenden, verwenden Sie -ropes anstelle von -rope* (um Ropes auszuschließen, anstatt jedes Wort auszuschließen, das mit Rope beginnt).
Wir haben zwei boolesche Operatoren für die Volltextsuche gesehen – und * , –, die ein Wort ausschließen, während * der Kürzungsoperator ist (stellen Sie sich das als Platzhalter für das Ende eines Wortes vor). In der folgenden Tabelle sind alle unterstützten booleschen Operatoren aufgeführt.Hier sind einige Beispiele für die Verwendung bestimmter Operatoren:
Eingabe:
Analyse: Diese Suche entspricht Zeilen mit den Wörtern Kaninchen und Köder.
Eingabe:
select note_text from productnotes where match(note_text) against('+rabbit +bait' in boolean mode);
Analyse: Ohne Angabe eines Operators werden bei dieser Suche Zeilen gefunden, die mindestens eines der Wörter „Kaninchen“ und „Köder“ enthalten.
Eingabe:
select note_text from productnotes where match(note_text) agains('rabbit bait' in boolean mode);
Analyse: Diese Suche entspricht dem Ausdruck „Kaninchenköder“ anstelle der beiden Wörter „Kaninchen“ und „Köder“.
Eingabe:
select note_text from productnotes where match(note_text) agains('"rabbit bait"' in boolean mode);
Analyse: Ordnen Sie Kaninchen und Karotte zu, erhöhen Sie die Menge der ersteren und verringern Sie die Menge der letzteren.
Eingabe:
select note_text from productnotes where match(note_text) agains('>rabbit <bcarrot' in boolean mode);
Analyse: Diese Suche entspricht den Wörtern „sicher“ und „kombination“, wodurch der Rang des letzteren herabgesetzt wird.
Ohne Sortierung anordnen Im booleschen Modus werden die zurückgegebenen Zeilen nicht in absteigender Reihenfolge nach Rangwert sortiert.
Das obige ist der detaillierte Inhalt vonTutorial zur booleschen Textsuche in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!