Zusammenfassung: In diesem Tutorium lernen Sie, wie Sie eine boolesche Volltextsuche in MySQL durchführen können. Außerdem lernen Sie, wie man boolesche Operatoren verwendet, um sehr komplexe Suchanfragen zu bilden.
Einführung in die boolesche Volltextsuche von MySQL
Neben der Volltextsuche in natürlicher Sprache unterstützt MySQL eine weitere Form der Volltextsuche, die boolesche Volltextsuche. Im booleschen Modus sucht MySQL nach Wörtern statt nach Begriffen wie bei der natürlichsprachlichen Suche.
MySQL erlaubt es Ihnen, eine Volltextsuche auf der Grundlage sehr komplexer Abfragen im booleschen Modus zusammen mit booleschen Operatoren durchzuführen. Deshalb ist die Volltextsuche im booleschen Modus für erfahrene Benutzer geeignet.
Um eine Volltextsuche im booleschen Modus durchzuführen, verwenden Sie den Modifikator IN BOOLEAN MODE
im Ausdruck AGAINST
. Das folgende Beispiel zeigt Ihnen, wie Sie nach einem Produkt suchen, dessen Produktname das Wort Truck
enthält.
Code language: SQL (Structured Query Language) (sql)
Es werden zwei Produkte zurückgegeben, deren Produktnamen das Wort Truck
enthalten.
Um das Produkt zu finden, dessen Produktnamen das Wort Truck
enthalten, aber keine Zeilen, die Pickup
enthalten, können Sie den booleschen Ausschlussoperator ( -
) verwenden, der das Ergebnis zurückgibt, das das Schlüsselwort Pickup
ausschließt, wie die folgende Abfrage:
Code language: SQL (Structured Query Language) (sql)
MySQL Boolean-Volltextsuchoperatoren
Die folgende Tabelle veranschaulicht die Booleschen Operatoren für die Volltextsuche und ihre Bedeutung:
Operator | Beschreibung |
---|---|
+ | Einschließen, das Wort muss vorhanden sein. |
– | Ausschließen, das Wort darf nicht vorhanden sein. |
> | Aufnehmen, und den Rangwert erhöhen. |
< | Aufnehmen, und den Rangwert verringern. |
() | Wörter in Unterausdrücke gruppieren (damit sie als Gruppe eingeschlossen, ausgeschlossen, eingestuft usw. werden können). |
~ | Den Rangwert eines Wortes negieren. |
* | Wildcard am Wortende. |
„“ | Definiert eine Phrase (im Gegensatz zu einer Liste einzelner Wörter wird die gesamte Phrase für die Aufnahme oder den Ausschluss abgeglichen). |
Die folgenden Beispiele veranschaulichen, wie boolesche Volltextoperatoren in der Suchabfrage verwendet werden:
Zur Suche nach Zeilen, die mindestens eines der beiden Wörter enthalten: mysql oder tutorial
‚mysql tutorial‘
Zur Suche nach Zeilen, die beide Wörter enthalten: mysql und tutorial
‚+mysql +tutorial‘
Um nach Zeilen zu suchen, die das Wort „mysql“ enthalten, aber den Zeilen, die „tutorial“ enthalten, den höheren Rang zu geben:
‚+mysql tutorial‘
Um nach Zeilen zu suchen, die das Wort „mysql“, aber nicht „tutorial“ enthalten:
‚+mysql -tutorial‘
Um nach Zeilen zu suchen, die das Wort „mysql“ enthalten, und die Zeile niedriger einzustufen, wenn sie das Wort „tutorial“ enthält.
‚+mysql ~tutorial‘
Um nach Zeilen zu suchen, die die Wörter „mysql“ und „tutorial“ oder „mysql“ und „training“ in beliebiger Reihenfolge enthalten, aber die Zeilen, die „mysql tutorial“ enthalten, höher einzustufen als „mysql training“.
‚+mysql +(>tutorial <training)‘
Um Zeilen zu finden, die Wörter enthalten, die mit „my“ beginnen, wie „mysql“, „mydatabase“, etc, verwenden Sie Folgendes:
‚my*‘
Hauptmerkmale der booleschen Volltextsuche von MySQL
- MySQL sortiert die Zeilen bei der booleschen Volltextsuche nicht automatisch nach Relevanz in absteigender Reihenfolge.
- Um boolesche Abfragen durchzuführen, benötigen InnoDB-Tabellen für alle Spalten des
MATCH
Ausdrucks einenFULLTEXT
Index. Beachten Sie, dass MyISAM-Tabellen dies nicht erfordern, obwohl die Suche ziemlich langsam ist. - MySQL unterstützt keine mehrfachen booleschen Operatoren in einer Suchabfrage auf InnoDB-Tabellen, z.B. ‚++mysql‘. MySQL wird einen Fehler zurückgeben, wenn Sie dies tun. MyISAM verhält sich jedoch anders. Es ignoriert andere Operatoren und verwendet den Operator, der dem Suchwort am nächsten ist, z.B. wird ‚+-mysql‘ zu ‚-mysql‘.
- Die InnoDB-Volltextsuche unterstützt keine nachgestellten Plus- (+) oder Minuszeichen (-). Sie unterstützt nur führende Plus- oder Minuszeichen. MySQL meldet einen Fehler, wenn Ihr Suchwort ‚mysql+‘ oder ‚mysql-‚ ist. Darüber hinaus sind die folgenden führenden Plus- oder Minuszeichen mit Platzhalter ungültig: +*, +-
- Die 50%-Schwelle bedeutet, dass MySQL ein Wort im Suchergebnis ignoriert, wenn es in mehr als 50% der Zeilen vorkommt.
In diesem Tutorial haben Sie gelernt, wie Sie boolesche Volltextsuchen mit vielen nützlichen booleschen Operatoren in MySQL durchführen können.
- War dieses Tutorial hilfreich?
- JaNein