Beispiel für die MySQL-Volltext-Fuzzy-Suche nach der Methode MATCH AGAINST

Beispiel für die MySQL-Volltext-Fuzzy-Suche nach der Methode MATCH AGAINST

MySQL 4.x und höher bieten Unterstützung für die Volltextsuche im MATCH ... AGAINST-Modus (ohne Berücksichtigung der Groß-/Kleinschreibung)

Der Speicher-Engine-Typ der Tabelle, für die der Volltextindex erstellt wird, muss MyISAM sein.

Das Problem besteht darin, dass „Match Against“ die chinesische Fuzzy-Suche nicht besonders gut unterstützt.

Erstellen Sie eine neue UTF-8-MyISAM-Tabelle und einen Volltextindex:

CREATE TABLE-Artikel (
  id INT UNSIGNED AUTO_INCREMENT NICHT NULL PRIMARY KEY,
  Titel VARCHAR(200),
  Textkörper,
  VOLLTEXT (Titel, Text)
) ENGINE=MyISAM DEFAULT >

FULLTEXT(title, body) erstellt einen Volltextindex für die Spalten „title“ und „body“. Geben Sie bei einer späteren Suche unbedingt beide Spalten an.

Fügen Sie dieser Tabelle einige Testdaten hinzu

INSERT INTO Artikel (Titel, Text) Werte
  ('MySQL-Tutorial', 'DBMS steht für DataBase ...'),
  ('So verwenden Sie MySQL richtig','Nachdem Sie durch ... gegangen sind'),
  ('MySQL optimieren','In diesem Tutorial zeigen wir ...'),
  ('1001 MySQL-Tricks','1. Führen Sie mysqld niemals als Root aus. 2. ...'),
  ('MySQL vs. YourSQL','Im folgenden Datenbankvergleich ...'),
  ('MySQL-Sicherheit', 'Bei richtiger Konfiguration funktioniert MySQL ...');

Volltextsuchtest

SELECT * FROM articles WHERE MATCH (Titel, Text) AGAINST ('Datenbank'); 

Beachten Sie, dass die Werte in MATCH (Titel, Text) die beiden Felder sein müssen, für die der Volltextindex erstellt wurde.

Die Standardzeichenlänge, die MySQL für die Volltextsuche unterstützt, beträgt 4. Sie können SHOW VARIABLES LIKE 'ft_min_word_len' verwenden, um die angegebene Zeichenlänge anzuzeigen. Sie können die Mindestzeichenlänge auch in der MySQL-Konfigurationsdatei my.ini ändern, indem Sie eine Zeile zu my.ini hinzufügen, beispielsweise: ft_min_word_len = 2. Starten Sie MySQL nach der Änderung neu.

Darüber hinaus berechnet MySQL auch die Gewichtung eines Wortes, um zu bestimmen, ob es im Ergebnissatz erscheint, und zwar wie folgt:

MySQL berechnet zunächst die Gewichtung jedes entsprechenden Wortes im Satz und in der Abfrage. Ein Wort, das in mehreren Dokumenten vorkommt, hat eine geringere Gewichtung (möglicherweise sogar eine Gewichtung von null), da es in diesem bestimmten Satz einen niedrigeren semantischen Wert hat. Andernfalls wird das Wort höher gewichtet, wenn es weniger Wörter gibt. Der Standardschwellenwert von MySQL beträgt 50 %. Im obigen Beispiel kommt „you“ in jedem Dokument vor, also beträgt der Wert 100 %. Nur Wörter unter 50 % werden im Ergebnissatz erscheinen.

Volltextsuchsyntax

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple -banana' IM BOOLEAN-MODUS);

Zeigt „UND“ an, was bedeutet, dass es eingeschlossen werden muss. - bedeutet NICHT, also nicht enthalten.

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('apple banana' IN BOOLEAN MODE);

Zwischen Apfel und Banane steht ein Leerzeichen, das ODER bedeutet, d. h., es ist mindestens eines der beiden Elemente Apfel und Banane enthalten.

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple banana' IN BOOLEAN MODE);

Äpfel müssen enthalten sein, aber wenn auch Bananen enthalten sind, wird ihnen ein höheres Gewicht beigemessen.

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple ~banana' IM BOOLEAN-MODUS);

~ ist der bekannte Exklusiv-Oder-Operator. Die zurückgegebenen Datensätze müssen Äpfel enthalten. Wenn sie aber auch Bananen enthalten, wird das Gewicht reduziert. Es ist jedoch nicht so streng wie +apple -banana, da letzteres nichts zurückgibt, wenn es „banana“ enthält.

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple +(>banana <orange)' IN BOOLEAN MODE);

Gibt Datensätze zurück, die sowohl Apfel als auch Banane oder sowohl Apfel als auch Orange enthalten. Allerdings ist das Gewicht des Datensatzes, der sowohl Apfel als auch Banane enthält, höher als das des Datensatzes, der sowohl Apfel als auch Orange enthält.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Verwendung der MySQL-Volltextsuche im Vergleich zu

<<:  Einige Erfahrung im Aufbau des React Native-Projektframeworks

>>:  Perfekte Lösung für keine rc.local-Datei in Linux

Artikel empfehlen

So verwenden Sie JS zum Parsen des Excel-Inhalts in der Zwischenablage

Inhaltsverzeichnis Vorwort 1. Ereignisse und Zwis...

Die „3I“-Standards für erfolgreiche Printwerbung

Für viele inländische Werbetreibende ist die Erste...

So ändern Sie den Hostnamen in Linux dauerhaft

Wenn Sie Ihren Hostnamen ändern möchten, können S...

Erläuterung zum Lastenausgleich und Reverseproxy von Nginx

Inhaltsverzeichnis Lastenausgleich Klassifizierun...

Tutorial zur Installation von MySQL 8.0.11 mit RPM unter Linux (CentOS7)

Inhaltsverzeichnis 1. Installationsvorbereitung 1...

Detaillierte Erklärung der grundlegenden Interaktion von Javascript

Inhaltsverzeichnis 1. So erhalten Sie Elemente Ho...

js native Karussell-Plugin-Produktion

In diesem Artikel wird der spezifische Code für d...

Einfacher Webseitencode, der im NetEase-Blog verwendet wird

So verwenden Sie den Code im NetEase-Blog: Melden...

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Pro...

So verwenden Sie Vue zum Entwickeln öffentlicher Account-Webseiten

Inhaltsverzeichnis Projekthintergrund Start Erste...

Detaillierte Schritte zur Installation und Verwendung von VMware ESXi 6.5

Inhaltsverzeichnis Einführung Architektur Vorteil...

Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen

Hintergrund Die Menge neuer Daten in der Geschäft...