MySQL Boolesche Volltextsuche

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)

mysql boolean tex searches - product name with keyword Truck
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 tex sucht mit Boolean-Operator

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 einen FULLTEXT 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