MySQL FullText -Suche

MySQL FullText -Suche
MySQL verwendet einen allgemeinen Index für die Spalten der Tabelle, um die Suche schneller zu machen. Ein anderer Indextyp ist der FullText -Index, der sich vom BTree -Index unterscheidet. FullText Index wird verwendet, um ein bestimmtes Schlüsselwort im Text zu durchsuchen und nicht den spezifischen Wert in den indizierten Spalten. Der Bree -Index und der FullText -Index können auf dieselbe Spalte der Tabelle angewendet werden.

Funktionen des FullText Index

  1. Es kann auf die Felder Zeichen, Varchar und Text der Tabelle angewendet werden.
  2. Es unterstützt InnoDB- und MyIsam -Speichermotoren.
  3. Es wird nur mit Match () und gegen () Klauseln verwendet

Arten von FullText -Suchmodi

Drei Arten der Suche können mit dem FullText -Index erreicht werden, der unten erläutert wird:

1. Boolescher Modus
Diese Art der Suche wird für die Abfragen verwendet, die Boolesche Operatoren enthalten, z. '*), usw.

2. Natürlicher Sprachmodus
Der Standardsuchentyp interpretiert die Suchzeichenfolge als wörtliche Phase.

3. Abfragemodus
Die Suche wird zweimal in diesem Suchtyp durchgeführt. Die zweite Suche wird auf das Ergebnis der ersten Suche angewendet, um die relevanteste Suchausgabe herauszufinden.

Voraussetzungen

Erstellen Sie eine Tabelle mit Daten in einer MySQL -Datenbank, um die Verwendung der FullText -Suche in MySQL zu überprüfen. Öffnen Sie das Terminal und stellen Sie eine Verbindung zum MySQL -Server her, indem Sie den folgenden Befehl ausführen:

$ sudo mysql -u root

Führen Sie den folgenden Befehl aus, um eine Datenbank mit dem Namen zu erstellen test_db:

Datenbank erstellen test_db;

Führen Sie den folgenden Befehl aus, um die Datenbank auszuwählen:

Verwenden Sie test_db;

Führen Sie die folgende Anfrage aus, um eine Tabelle mit dem Namen zu erstellen Kunden mit fünf Feldern:

Tischkunden erstellen (Kunden
Id int nicht null primärer Schlüssel,
Nennen Sie Varchar (30) nicht null,
E -Mail Varchar (50),
Adresstext,
contact_no varchar (15));

Führen Sie die folgende Abfrage aus, um vier Datensätze in die Einfügung in die Kunden Tisch.

Einfügen in "Kunden" ("ID", "Name", "E -Mail", "Adresse", "contact_no") Werte
('4001', 'Laboni Sarkar', '[email protected] ', '34, Dhanmondi 9/A, Dhaka.',' 01844767234 '),
('4002', 'Tahsin Ahmed', '[email protected] ',' 123/1, Jigatola, Dhaka.',' 01599348742 '),
('4003', 'Hasina Sarkar', '[email protected] ',' 280, Shantibagh, Dhaka.',' 01600934874 '),
('4004', 'Mehrab Ali', '[email protected] ', '78, Jigatola, Dhaka.',' 01727863459 ');

Fügen Sie den folgenden Befehl aus, um den FullText -Index für die hinzuzufügen Adresse Feld der Kunden Tisch:

Änderungstabelle Kunden Fügen Sie FullText (Adresse) hinzu;

Führen Sie den folgenden Befehl aus, um die Liste der definierten Indizes der zu überprüfen Kunden Tisch:

Index von Kunden zeigen;

Ausgang
Die folgende Ausgabe zeigt, dass zwei Indizes für die vorhanden sind Kunden Tisch. Einer ist der BTREE -Index, der standardmäßig für das Primärfeld definiert wurde, und ein anderer ist der FullText -Index, der später für die definiert wurde Adresse Feld:

Verwendung von FullText -Suche

Die Suche in der Tabelle mit verschiedenen Modi des FullText -Index wurde in diesem Tutorial gezeigt.

FullText -Suche im Booleschen Modus

Die folgende Auswahlabfrage durchsucht das Wort 'Dhanmondi' im Adresse Feld der Kunden Tabelle im Booleschen Modus. Der Kunden Die Tabelle enthält nur einen Datensatz, der mit diesem Kriterium entspricht:

Wählen Sie * von Kunden aus, wobei übereinstimmen (Adresse) gegen ('dhanmondi' im booleschen Modus);

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt:

Führen Sie die folgende Abfrage aus, um beide Wörter zu durchsuchen. 'Dhaka ' Und 'Jigatola ' im Adresse Feld der Kunden Tabelle mit dem FullText -Index im Booleschen Modus. Es gibt zwei Reihen in der Kunden Tabelle, die beide Wörter enthält, 'Dhaka ' Und 'Jigatola ':

Wählen Sie * von Kunden aus
Wobei übereinstimmt (Adresse) gegen ('Dhaka +Jigatola' im Booleschen Modus);

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass die Adresse Feld enthält ''Dhaka ' Und 'Jigatola ':

Führen Sie die folgende Abfrage aus, um diese Zeilen der Kundentabelle zu durchsuchen, die das Wort enthalten. 'Dhaka ' enthält aber nicht das Wort 'Jigatola ' im Adresse Feld der Kunden Tabelle mit FullText Index im Booleschen Modus. Zwei Zeilen existieren in der Kunden Tabelle, die den Kriterien entspricht:

Wählen Sie * von Kunden aus, wobei Übereinstimmung (Adresse) gegen ('Dhaka -jigatola' im Booleschen Modus);

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt die Adresse Feld enthält ''Dhaka ' aber nicht 'Jigatola ':

FullText -Suche im natürlichen Sprachmodus

Fügen Sie den folgenden Befehl aus, um den FullText -Index für die hinzuzufügen Name Feld der Kunden Tisch:

Änderungstabelle Kunden fügen FullText (Name) hinzu;

Die folgende Auswahlabfrage durchsucht das Wort 'Sankar ' im Name Feld der Kunden Tabelle im natürlichen Sprachmodus. Der Kunden Tabelle enthält zwei Datensätze, die mit diesem Kriterium entsprechen:

Wählen Sie * von Kunden aus
Wobei übereinstimmt (Name) gegen ('Sarkar' im natürlichen Sprachmodus);

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt. Die Zeilen, die die 'enthalten'Sarkar 'Wert in der Name Das Feld wurde in der Ausgabe gezeigt:

FullText -Suche im Abfrageerweiterungsmodus

Die folgende Auswahlabfrage durchsucht das Wort 'Laboni ' im Name Feld der Kunden Tabelle im Abfrageerweiterungsmodus. Der Kunden Tabelle enthält zwei Datensätze, die mit diesem Kriterium übereinstimmen:

Wählen Sie * von Kunden aus
Wobei übereinstimmen (Name) gegen ("Laboni" mit Abfrageerweiterung);

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt. In der Ausgabe enthält das Namen des Namens der ersten Zeile das Wort 'Laboni ' mit einem anderen Wort ','Sarkar ', und das Name des Namens der zweiten Zeile enthält das passende Wort 'Sarkar '.

DROPTETTExt Index

Führen Sie den folgenden Befehl aus, um den vollständigen Index der Name Feld:

Änderungstabelle Kunden fallen in den Indexnamen;

Führen Sie den folgenden Befehl aus, um die aktuelle Indexliste des Kunden Tabelle nach dem Entfernen des FullText -Index aus dem Name Feld:

Index von Kunden zeigen;

Ausgang
Nach der Ausführung der vorherigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass die Kunden Die Tabelle enthält einen BTREE -Index für die Ausweis Feld und ein Volltext für die Adresse Feld:

Abschluss

Die verschiedenen Möglichkeiten, Inhalte in einer Tabelle mit dem FullText -Index zu durchsuchen, wurden in diesem Tutorial gezeigt, um den neuen MySQL -Benutzern zu helfen. Darüber hinaus wurden die vollständigen Funktionen für den FullText Index erörtert. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Tutorials finden Sie in anderen Linux -Hinweisartikeln.