Die Volltextindizierung erfordert eine spezielle Abfragesyntax. Die Volltextsuche kann mit oder ohne Index durchgeführt werden, die Existenz eines Indexes erhöht jedoch die Übereinstimmungsgeschwindigkeit. Der Index des Volltextindex wird in einer speziellen Struktur gespeichert, um das Auffinden des Inhalts zu erleichtern, der dem Suchbegriff im Dokument entspricht. Die in unserem Alltag am häufigsten genutzte Volltextsuche erfolgt über die Internetsuchmaschine. Obwohl die Datenmenge in Websuchmaschinen sehr groß ist und üblicherweise keine relationalen Datenbanken verwendet werden, sind die Prinzipien ähnlich. Die Volltextindizierung unterstützt den zeichenbasierten Abruf (Spalten vom Typ CHAR, VARCHAR und TEXT) und unterstützt auch den natürlichen Sprachmodus (Natural Language Mode, Standard) und den Booleschen Modus (Boolean Mode). Wenn wir beispielsweise nach „Datenbank-Engine“ suchen, werden Inhalte abgerufen, die „Datenbank“, „Engine“ und „Datenbank-Engine“ enthalten. Die Implementierung der Volltextindizierung weist zahlreiche Einschränkungen auf und ist sehr komplex. Da es jedoch in den MySQL-Server integriert ist und die Anforderungen vieler Anwendungen erfüllen kann, wird es häufig verwendet. In Versionen vor MySQL 5.6 unterstützte nur die MyISAM-Speicher-Engine die Volltextindizierung. Um einen Volltextindex zu erstellen, müssen Sie eine Spalte angeben, die als Volltextindex markiert werden soll, beispielsweise die Inhaltsspalte unten. Tabelle erstellen t_news ( id INT UNSIGNED AUTO_INCREMENT NICHT NULL PRIMARY KEY, Inhalt TEXT, Autor VARCHAR(32), Titel VARCHAR(128), VOLLTEXT (Inhalt) )ENGINE=InnoDB; Vor MySQL 5.6 war die Unterstützung für die chinesische Suche nicht sehr gut. Sie mussten die Wortsegmentierung selbst durchführen und die Absätze dann vorab in Wörter verarbeiten, bevor Sie sie in der Datenbank speicherten. MySQL 5.7.6 und höher hatten einen integrierten Wortsegmentierer, ngram. Ngram unterstützt das Festlegen der Länge von Wortsegmenten, wodurch Chinesisch entsprechend der Länge in verschiedene Wörter aufgeteilt werden kann (obwohl dies nicht sehr intelligent ist, erfüllt es die meisten Szenarien). Sie können die Länge der Wortsegmentierung über die globale MySQL-Variable ngram_token_size festlegen. Der Standardwert ist 2 und unterstützt Optionen von 1 bis 10. Für das obige Beispiel müssen Sie einen Wörtertrenner angeben, um einen Volltextindex zu erstellen. Tabelle erstellen t_news ( id INT UNSIGNED AUTO_INCREMENT NICHT NULL PRIMARY KEY, Inhalt TEXT, Autor VARCHAR(32), Titel VARCHAR(128), VOLLTEXT-SCHLÜSSEL idx(Inhalt) MIT PARSER ngram )ENGINE=InnoDB; Fügen Sie einen Datentest ein. INSERT INTO `t_news` (`id`, `Inhalt`, `Autor`, `Titel`) WERTE ('1', 'Ich habe eine Datenbank und eine Engine', 'Programmierer auf der Insel', 'Datenbank-Engine'); Bei einer einfachen Fuzzy-Suche kann diese mit LIKE vervollständigt werden, während bei einer Volltextsuche folgende Anweisung verwendet werden muss: Wählen Sie * aus t_news WHERE MATCH (Inhalt) GEGEN ('Daten-Engine' IM NATÜRLICHEN SPRACHMODUS) Auf diese Weise können Sie den gerade eingefügten Inhalt wieder abrufen, was mit „LIKE“ nicht möglich ist. Es unterstützt auch das Sortieren nach Relevanz und das Einfügen eines weiteren Datenelements: INSERT INTO `t_news` (`id`, `Inhalt`, `Autor`, `Titel`) VALUES (2, 'Ich habe eine Datenbank', 'Programmierer auf der Insel', 'Datenbank') Führen Sie dann eine Sortierabfrage durch: SELECT *, MATCH (Inhalt) AGAINST ('Daten-Engine') AS Relevanz VON t_news WHERE MATCH (Inhalt) AGAINST ('Daten-Engine') ORDER BY Relevanz ASC Hierbei werden die passenden Werte als Spalte abgefragt, um diese anhand ihrer Aliase sortieren zu können. Je höher die Korrelation, desto größer ist der entsprechende Relevanzwert und kann somit zur Sortierung herangezogen werden. Wenn die Investition irrelevant ist, beträgt der Relevanzwert 0. Der Boolesche Modus ermöglicht mehr Kontrolle, z. B. die Verwendung von + zum Beibehalten übereinstimmender Ergebnisse und - zum Ausschließen übereinstimmender Ergebnisse. Das Folgende gleicht die Daten ab, schließt jedoch die Daten aus, die die Engine enthalten. Weitere Operatoren finden Sie in der offiziellen MySQL-Dokumentation: Volltextindexoperatoren. Wählen Sie * aus t_news WO MATCH (Inhalt) GEGEN ('+data*-engine' IM BOOLEAN-MODUS); Oben finden Sie den detaillierten Inhalt des MySQL-Volltextindex-Nutzungshandbuchs. Weitere Informationen zum MySQL-Volltextindex finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Beispielcode des Vue-Symbolselektors
>>: Tiefgreifendes Verständnis der Verwendung von CSS clear:both
Ursprung: Vor einigen Tagen hat ein Tester eine A...
Hallo zusammen, ich bin Liang Xu. Sind Sie bei de...
Inhaltsverzeichnis 1. Drei Funktionen der toStrin...
Detaillierte Erklärung und Zusammenfassung der UR...
Inhaltsverzeichnis 1. Konfigurieren Sie den Linux...
Inhaltsverzeichnis 1. Erster Blick auf COUNT 2. D...
ab-Befehlsprinzip Der Befehl ab von Apache simuli...
In Linux-Systemen, insbesondere Serversystemen, i...
Ich werde meinen ersten Versuch mit vue3.0 aufzei...
Eines der wichtigsten Merkmale eines Stylesheets ...
Das letzte Update von Alibaba Cloud Disk ist scho...
Inhaltsverzeichnis 1. Projektbeschreibung: 2. Pro...
Zweck: Verschachtelte Verwendung von MySQL-Aggreg...
brauchen Wenn Sie ein Feld abfragen, müssen Sie e...
Vorwort Überprüfung und Zusammenfassung von REM-A...