Die Prinzipien und Mängel der MySQL-Volltextindizierung

Die Prinzipien und Mängel der MySQL-Volltextindizierung

Der MySQL-Volltextindex ist ein spezieller Index, der eine Liste aller Wörter generiert, die in einer bestimmten Spalte einer bestimmten Tabelle vorkommen.

Tabelle ändern, Tabellenname, Volltext hinzufügen (Spalte1, Spalte2)

veranschaulichen:

Kann nur in MyISAM-Tabellen erstellt werden

Der Volltextindex kann nur durchsucht werden, indem Wörter durch Leerzeichen oder Satzzeichen getrennt werden. Chinesische Wörter können nicht durchsucht werden (es gibt spezielle Anwendungen, die die chinesische Wortsegmentierung unterstützen und nach chinesischen Wörtern suchen können, aber sie sind nicht ideal).

Wörter mit weniger als 3 Zeichen werden nicht in den Volltextindex aufgenommen. Sie können diese Option ändern, indem Sie my.cnf ändern.

ft_min_word_len=3

Starten Sie den MySQL-Server neu und verwenden Sie repair table tablename quick um den Volltextindex für die relevanten Datentabellen neu zu generieren.

Wählen Sie * aus Tabellenname, wobei Übereinstimmung (Spalte1, Spalte2) gegen ('Wort1 Wort2 Wort3')>0,001 ist.

match ... against findet Datensätze, die in den Datenspalten column1 und column2 mindestens eines der drei Wörter word1, word2 und word3 enthalten. Die Datenspalte nach dem Keyword-Match muss mit der Datenspalte für die Erstellung des Volltextindexes übereinstimmen. Die Suchbegriffe sind nicht case-sensitiv und nicht sequenzsensitiv. Wörter mit weniger als 3 Zeichen werden in der Regel ignoriert. Der Ausdruck „match... against ...“ gibt als Ergebnis seiner eigenen Auswertung eine Gleitkommazahl zurück, die den Grad der Übereinstimmung des resultierenden Datensatzes mit dem gesuchten Wort widerspiegelt. Wenn keine Datensätze übereinstimmen oder zu viele übereinstimmende Ergebnisdatensätze ignoriert werden, gibt der Ausdruck 0 zurück. Der Ausdruck > 0,001 wird verwendet, um Ergebnisdatensätze auszuschließen, deren Übereinstimmungsrückgabewerte zu klein sind.

Wählen Sie *, Match (Spalte1, Spalte2) gegen ('Wort1 Wort2 Wort3') als Match
von Tabellenname
mit mtch>0,01
Sortieren nach mtch desc
Grenze 5

Suchen Sie die fünf am besten passenden Datensätze. Sie können in der Where-Klausel keine Pseudonyme verwenden, verwenden Sie also having.

Die boolesche Volltextsuche unterstützt die folgenden Operatoren:

+Wort: Ein vorangestelltes Pluszeichen gibt an, dass das Wort am Anfang jeder zurückgegebenen Zeile stehen muss.

-word: Ein vorangestelltes Minuszeichen gibt an, dass das Wort in keiner der zurückgegebenen Zeilen vorkommen darf.

(kein Operator): Im Standardzustand (wenn kein + oder – angegeben ist) ist das Wort optional, aber die Zeile, die das Wort enthält, hat einen höheren Rang. Dies ähnelt der Funktionsweise von MATCH() ... AGAINST() ohne die Änderung IN BOOLEAN MODE.

> <Diese beiden Operatoren werden verwendet, um die Auswirkung eines Wortes auf den einer Zeile zugewiesenen zugehörigen Wert zu ändern. Der Operator „>“ verstärkt seine Wirkung, während der Operator „<“ sie verringert. Siehe das Beispiel unten.

( ) Klammern werden verwendet, um Wörter in Teilausdrücke zu trennen. Klammern können verschachtelt sein.

~Wort: Eine führende Tilde fungiert als Negationszeichen und negiert die Auswirkung des Wortes auf die Relevanz der Zeile. Dies ist nützlich, um „Lärmwörter“ zu markieren. Zeilen, die solche Wörter enthalten, werden niedriger eingestuft als andere Zeilen.

Wort*: Suche nach Wörtern, die mit Wort beginnen, darf nur am Ende des Wortes erscheinen

"Wort1 Wort" : Das angegebene Wort muss im Datensatz vorkommen, die Reihenfolge muss stimmen und bei den Buchstaben wird auf Groß- und Kleinschreibung geachtet.

Wählen Sie * aus Tabellenname, wobei Übereinstimmung (Spalte1, Spalte2) gegen ('+Wort1 +Wort2 -Wort3' im Booleschen Modus') besteht.

Boolesche Suchvorgänge können nur 1 oder 0 zurückgeben und geben keine Gleitkommazahlen mehr zurück, die den Übereinstimmungsgrad angeben.

Nachteile der Volltextindizierung:

1. Je größer die Datentabelle, desto besser ist der Volltextindexeffekt. Kleinere Datentabellen können unverständliche Ergebnisse liefern.

2. Bei der Volltextsuche wird das gesamte Wort als passendes Objekt verwendet. Wird ein Wort umgewandelt (mit einem Suffix oder einer Pluralform), wird es als ein anderes Wort betrachtet.

3. Nur Zeichenfolgen, die aus Buchstaben, Zahlen, einfachen Anführungszeichen und Unterstrichen bestehen, werden als Wörter betrachtet. Buchstaben mit phonetischen Symbolen sind zwar immer noch Buchstaben, werden von C++ jedoch nicht mehr als Wörter betrachtet.

4. Groß-/Kleinschreibung wird nicht beachtet

5. Kann nur auf MyISAM verwendet werden

6. Die Erstellung von Volltextindizes ist langsam, und die Änderung verschiedener Daten mit Volltextindizes ist ebenfalls langsam

7. Unterstützt kein Chinesisch

Oben finden Sie ausführliche Informationen zu den Prinzipien und Mängeln der MySQL-Volltextindizierung. Weitere Informationen zur MySQL-Volltextindizierung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Prinzip des MySQL-Indexfehlers
  • MySQL-Indexprinzip und Analyse von Anwendungsbeispielen
  • Grundlegendes zum MySQL-Abfrageoptimierungsprozess
  • Techniken zur Optimierung von MySQL-Paging-Abfragen
  • Methode zur Optimierung von MySQL-Gruppenabfragen
  • Detaillierte Erläuterung des MySQL-Indexprinzips und der Abfrageoptimierung

<<:  So entfernen Sie die Trennlinie einer Webseitentabelle

>>:  Docker verwendet CMD- oder ENTRYPOINT-Befehle, um mehrere Dienste gleichzeitig zu starten

Artikel empfehlen

Lösen Sie das MySQL 5.7.9 Version sql_mode=only_full_group_by Problem

MySQL 5.7.9 Version sql_mode=only_full_group_by P...

Zwei Möglichkeiten zum Starten des Linux-Bootdienstes

Inhaltsverzeichnis rc.local-Methode chkconfig-Met...

js implementiert Tabellen-Drag-Optionen

In diesem Artikelbeispiel wird der spezifische JS...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...

Detaillierte Erklärung zum Abrufen der IP-Adresse eines Docker-Containers

1. Nach dem Betreten des Containers Katze /etc/ho...

So beheben Sie den Fehler "ERROR 1045 (28000)" beim Anmelden bei MySQL

Heute habe ich mich beim Server angemeldet und mi...

So überwachen Sie die Windows-Leistung auf Zabbix

Hintergrundinformationen Ich habe kürzlich einige...

Detaillierte Erklärung der Befehle zum Anzeigen von Linux-Dateien

So zeigen Sie Linux-Dateien an Befehl zum Anzeige...

Natives JS zur Implementierung einer Echtzeituhr

Teilen Sie einen Echtzeituhreffekt, der mit nativ...

JS beherrscht schnell die Verwendung von ES6-Klassen

1. Wie konstruieren? Lassen Sie uns die allgemein...

Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu 18.04

Dieser Artikel beschreibt die Installation und Ko...

CSS, um den kleinen scharfen Eckeneffekt von Blasen zu erzielen

Effektbild (die Rahmenfarbe ist zu hell, setzen S...