Booleschen Modus für erweiterte Suche verwenden
In diesem Schritt verwenden Sie den booleschen Modus der Klausel MATCH AGAINST, um präzisere und flexiblere Volltextsuchanfragen durchzuführen. Der boolesche Modus ermöglicht die Verwendung von Operatoren, um zu steuern, welche Wörter in den Ergebnissen vorhanden sein müssen oder nicht dürfen.
Stellen Sie sicher, dass Sie sich immer noch in der MySQL-Shell befinden und die Datenbank search_db verwenden. Wenn nicht, wählen Sie die Datenbank aus:
USE search_db;
Um den booleschen Modus zu verwenden, fügen Sie die Klausel IN BOOLEAN MODE zur Anweisung MATCH AGAINST hinzu. Die Syntax lautet:
SELECT column1, column2, ...
FROM table_name
WHERE MATCH (column_list) AGAINST ('search_term' IN BOOLEAN MODE);
Hier sind einige gängige Operatoren, die im booleschen Modus verwendet werden:
+: Erfordert, dass das Wort im Ergebnis vorhanden ist.
-: Schließt Zeilen aus, die das Wort enthalten.
"": Sucht nach einer exakten Phrase.
*: Platzhalter-Operator (am Ende eines Wortes).
Suchen wir nach Artikeln, die das Wort "MySQL" enthalten müssen und das Wort "optimizing" nicht enthalten dürfen.
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('+MySQL -optimizing' IN BOOLEAN MODE);
Diese Abfrage verwendet den Operator +, um "MySQL" zu erfordern, und den Operator -, um "optimizing" auszuschließen.
Sie sollten die folgende Ausgabe sehen:
+----+------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+------------------------+---------------------------------------------------------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. |
+----+------------------------+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
Der Artikel über "Optimizing MySQL Queries" wird ausgeschlossen, da er "optimizing" enthält.
Suchen wir nun nach der exakten Phrase "full-text search":
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('"full-text search"' IN BOOLEAN MODE);
Die Verwendung von doppelten Anführungszeichen sucht nach den Wörtern als zusammenhängende Phrase.
Die Ausgabe wird sein:
+----+------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+------------------------+---------------------------------------------------------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. |
+----+------------------------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
Nur der erste Artikel wird zurückgegeben, da er die exakte Phrase "full-text search" enthält.
Versuchen wir, den Platzhalter-Operator * zu verwenden. Angenommen, Sie möchten Artikel finden, die Wörter enthalten, die mit "index" beginnen.
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('index*' IN BOOLEAN MODE);
Der Begriff index* passt auf Wörter wie "index" und "indexing".
Die Ausgabe wird sein:
+----+------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+------------------------+---------------------------------------------------------------------+
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. |
+----+------------------------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
In diesem Schritt haben Sie gelernt, wie Sie den booleschen Modus mit der Klausel MATCH AGAINST und verschiedenen Operatoren verwenden, um kontrolliertere und spezifischere Volltextsuchanfragen durchzuführen. Im nächsten Schritt üben Sie die Kombination dieser Techniken.