Heim >Datenbank >MySQL-Tutorial >Ein kurzes Tutorial zur MySQL-Volltextindexanwendung

Ein kurzes Tutorial zur MySQL-Volltextindexanwendung

大家讲道理
大家讲道理Original
2016-11-07 16:19:141030Durchsuche

In diesem Artikel werden die Grundkenntnisse des MySQL-Volltextindex unter folgenden Aspekten vorgestellt:

Mehrere Überlegungen zum MySQL-Volltextindex

  • Die Syntax von Full -Textindex

  • Einführung in mehrere Suchtypen

  • Beispiele für mehrere Suchtypen

  • Mehrere Beispiele für Volltextindizierung Hinweise

Die Suche muss in einer Indexspalte vom Typ Volltext erfolgen und die in Übereinstimmung angegebene Spalte muss im Volltext angegeben worden sein

Kann kann nur auf Tabellen-Engines angewendet werden (MySQL 5.6 und höher können auch in der Innodb-Tabellen-Engine verwendet werden)

Sie können nur Volltextindizes für Spalten vom Typ char, varchar und text erstellen

Kann wie gewöhnliche Indizes beim Definieren der Tabelle angegeben oder nach dem Erstellen der Tabelle hinzugefügt oder geändert werden

Für das Einfügen umfangreicher Datensätze wird nach dem Einfügen von Daten in eine Tabelle ein Index erstellt ohne Index ist schneller als das Einfügen in eine Datentabelle mit Index. Der Vorgang ist viel schneller.

Die Suchzeichenfolge muss eine konstante Zeichenfolge sein, nicht der Spaltenname der Tabelle.

Wenn die Die Selektivität des Suchdatensatzes überschreitet 50 %, es wird davon ausgegangen, dass keine Übereinstimmung vorliegt (nur eingeschränkt in der natürlichen Suche)

Volltextindex-Suchsyntax

MATCH (Spaltenname 1, Spaltenname 2 ,…) GEGEN (Suchzeichenfolge [Suchmodifikator])

Die in Übereinstimmung angegebenen Spaltennamen 1, 2 usw. sind die Spaltennamen, die beim Erstellen des Volltextindex angegeben wurden. Die nachfolgenden Suchmodifikatoren werden wie folgt beschrieben:

Suchmodifikator:

{
IN NATURAL LANGUAGE MODE
| IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
| IN BOOLEAN MODE
| WITH QUERY EXPANSION
}

Einführung in mehrere Suchtypen

Die Suchmodifikatoren oben veranschaulichen tatsächlich 3 Volltextsuchen Typen

IM NATÜRLICHEN SPRACHENMODUS

Einführung: Das Standardsuchformular (ohne Suchmodifikator oder der Modifikator ist IM NATÜRLICHEN SPRACHENMODUS)

Funktionen:

Die Zeichen in der Suchzeichenfolge werden als normale Zeichen ohne besondere Bedeutung analysiert

Filtern Sie die Zeichenfolgen in der Liste der maskierten Zeichen

Wenn die Selektivität des Datensatzes 50 % überschreitet, wird dies normalerweise berücksichtigt ein Missverhältnis sein.

Die zurückgegebenen Datensätze werden nach ihrer Relevanz sortiert und angezeigt

IN BOOLEAN MODE

Einführung: Suche im Booleschen Modus (wenn der Suchmodifikator IM BOOLEAN-MODUS steht)

Funktionen:

analysiert die Bedeutung von Sonderzeichen in der Suchzeichenfolge nach bestimmten Regeln und erstellt einige logische Regeln. Zum Beispiel: Ein bestimmtes Wort muss vorkommen oder darf nicht vorkommen usw.

Die von dieser Art der Suche zurückgegebenen Datensätze werden nicht nach Relevanz sortiert

WITH QUERY EXPANSION

Einführung: Ein etwas komplexeres Suchformular, das tatsächlich zwei natürliche Suchen durchführt, kann Datensätze zurückgeben, die eine direkte Einleitung aufzeichnen Beziehungen, Modifikator IM NATÜRLICHEN SPRACHMODUS MIT ABFRAGEERWEITERUNG oder MIT ABFRAGEERWEITERUNG Modifikator

Funktionen: Diese Art der Suche bietet tatsächlich eine indirekte Suchfunktion, zum Beispiel: Ich suche nach einem bestimmten Wort und die erste zurückgegebene Zeile tut dies Das Suchwort enthält keine Zeichenfolge. Ein zweiter Abgleich kann basierend auf den Datensatzwörtern des ersten Suchergebnisses durchgeführt werden, sodass es möglich ist, übereinstimmende Datensätze mit einigen indirekten Beziehungen zu finden.

Beispiele für mehrere Suchtypen

Anwendung im NATURAL LANGUAGE MODE-Modus:

wird weiterhin auf die Produkttabelle angewendet, in der wir einen Volltextindex im Namen eingerichtet haben Da ich relevante Datensätze in der Namensspalte anhand von Schlüsselwörtern abgleichen muss

Die SQL-Anweisung lautet wie folgt:

SELECT * FROM product WHERE match(name) against(‘auto')

Die Zeit ist nicht schlecht, ich habe mehr als 10.000 Datensätze erreicht Von fast 870.000, was zeitaufwändig ist, ist der Effekt immer noch gut

Hinweis: Standardmäßig werden Datensätze basierend auf der Relevanz von hoch nach niedrig zurückgegeben

Wir können eine Übereinstimmung auswählen (name) gegen('auto') FROM Produkt Überprüfen Sie den Korrelationswert des Datensatzes. Die Werte liegen zwischen 0 und 1. 0 bedeutet, dass der Datensatz nicht übereinstimmt

Mehrere wichtige Merkmale:

1. Welche Wörter werden ignoriert?

Der Standard-Volltextindex berücksichtigt Wörter mit mehr als 4 Zeichen als gültige Wörter 🎜>Schutzwörter in der Vokabelliste. Der Standard-Volltextindex blockiert einige gebräuchliche Wörter, da diese Wörter zu häufig vorkommen und keine semantische Rolle spielen, sodass sie im Suchvorgang ignoriert werden. Selbstverständlich ist diese Liste auch konfigurierbar.
2. So führen Sie eine Wortsegmentierung durch

Der Volltextindex betrachtet ein fortlaufendes gültiges Zeichen (den mit w im regulären Ausdruck übereinstimmenden Zeichensatz) als Wort, das auch ein „'“ enthalten kann. , aber zwei aufeinanderfolgende ' werden als Trennzeichen betrachtet. Andere Trennzeichen wie Leerzeichen, Kommas, Punkte usw.

IM BOOLEAN-MODUS-Anwendung:

Im Boolean-Matching-Modus können wir einige spezielle Symbole hinzufügen und einige logische Funktionen für Suchprozesse hinzufügen. Zum Beispiel das auf der offiziellen Website bereitgestellte Beispiel (Suche nach Anweisungen, die MySQL-Strings und nicht Yousql enthalten):

SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST (‘+MySQL -YourSQL' IN BOOLEAN MODE);
Es ist ersichtlich, dass wir mehr Kontrolle über die Suche haben und es sieht mehr aus " High-End“.

Tatsächlich impliziert die obige Operation mehrere Bedeutungen:

Pluszeichen: entspricht und

Minuszeichen: entspricht nicht
Nein: entspricht oder

Werfen wir einen Blick auf einige wichtige Funktionen der Booleschen Typsuche:

1. Es gibt keine Grenze für die Datensatzselektivität. Auch wenn die Suchergebnisse 50 % der Gesamtzahl überschreiten, werden die Ergebnisse nicht automatisch in absteigender Reihenfolge sortiert Relevanz der Datensätze
3. Ja Es wird direkt auf den Volltextindex angewendet, ohne dass Volltext erstellt wird. Dadurch wird die Abfrage jedoch sehr langsam, daher ist es besser, sie nicht zu verwenden.
4. Unterstützen Sie die minimale und maximale Wortlänge.
5. Von der booleschen Suche unterstützte Operatoren:

n Pluszeichen: zeigt an, dass das geänderte Wort in enthalten sein muss Im Datensatz

n Minuszeichen -: Zeigt an, dass das geänderte Wort nicht im Datensatz erscheinen darf

n Kein Operator: Das Wort ist optional, aber der Datensatz, der das Wort enthält, ist von hoher Relevanz

n Doppelte Anführungszeichen " : Verwenden Sie eine Phrase als Übereinstimmung. Zum Beispiel: „ein Wort“ gleicht Wörter mit einem Wort zusammen

Hier sind einige offizielle Beispiele:

Datensätze, die mindestens ein Wort enthalten

'Apfel „Banane“

muss die beiden Wörter
„Apfelsaft“ enthalten.

muss „Apfel“ enthalten. Datensätze, die „Macintosh“ enthalten, sind von hoher Relevanz und dürfen nicht „Apfel Macintosh“ enthalten.

Muss Apfel enthalten und darf nicht Macintosh sagen
'apple -macintosh'

Suche nach Datensätzen von Wörtern, die mit Apfel beginnen
'apple*'

Vollständig Passen Sie einige Wörter an
'"einige Wörter"'


Nachdem ich die Grundkenntnisse der MySQL-Volltextindizierung verstanden habe, habe ich das Gefühl, dass der Volltextindex sicherlich viel besser ist als vergleichbare, aber wenn es um Fortgeschrittene geht Suchen. Es ist immer noch etwas grob und ich mache mir Sorgen wegen Leistungsproblemen.

Ich möchte es nur als Einführung verstehen, und es ist auch eine Übersetzung einiger grundlegender Kenntnisse auf der offiziellen Website

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn