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

Beispielverwendung des Linux-Komprimierungsdateibefehls „zip“

Das „.zip“-Format wird zum Komprimieren von Datei...

Was ist TypeScript?

Inhaltsverzeichnis 1. JavaScript-Probleme 2. Vort...

Detailliertes Tutorial zur Konfiguration von Docker nginx + https-Subdomains

Heute habe ich zufällig einem Freund beim Umzug s...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

So fügen Sie dem Tomcat-Dienst einen Java-Startbefehl hinzu

Mein erstes Serverprogramm Ich lerne gerade, Onli...

HTML-Tutorial: Definitionsliste

<br />Originaltext: http://andymao.com/andy/...

Detaillierter Prozess zur Konfiguration von NIS in Centos7

Inhaltsverzeichnis Prinzip Vorbereitung der Netzw...

Detaillierte Analyse von MySQL-Deadlock-Problemen

Vorwort Wenn sich unser Geschäft in einem sehr fr...

Detailliertes Tutorial zur Installation von Docker auf CentOS 7.5

Einführung in Docker Docker ist eine Open-Source-...

So legen Sie in Linux eine feste IP fest (getestet und effektiv)

Öffnen Sie zunächst die virtuelle Maschine Öffnen...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

Der Fallstrickrekord des Gummi-Rebound-Effekts der iOS WeChat H5-Seite

Geschäftliche Anforderungen Eines der Projekte, d...