MySQL FullText Wyszukiwanie

MySQL FullText Wyszukiwanie
MySQL używa ogólnego indeksu dla kolumn tabeli, aby wyszukiwać szybciej, a ten typ wyszukiwania nazywany jest indeksem Btree. Innym rodzajem indeksu jest indeks FullText, który różni się od indeksu BTREE. Indeks FullText służy do wyszukiwania konkretnego słowa kluczowego w tekście, a nie do wartości określonej w indeksowanych kolumnach. Indeks BTREE i indeks FullText można zastosować do tej samej kolumny tabeli.

Funkcje indeksu pełnotekstowego

  1. Można go zastosować do pól char, varchar i tekstu tabeli.
  2. Obsługuje silniki magazynowe Innodb i Myisam.
  3. Jest używany tylko z klauzulami Match () i przeciw ()

Rodzaje trybów wyszukiwania w pełni tekstu

Trzy rodzaje wyszukiwania można wykonać przy użyciu indeksu FullText, co wyjaśniono poniżej:

1. Tryb logiczny
Ten typ wyszukiwania służy do zapytań zawierających operatorów logicznych, takich jak operator mniej niż (''), plus znak ('+'), minus znak ('-'), podwójne cytaty („”), dzikie operator („”), Wildcard Operator ( „*) itp.

2. Tryb języka naturalnego
Domyślny typ wyszukiwania interpretuje ciąg wyszukiwania jako fazę dosłowną.

3. Tryb rozszerzenia zapytania
Wyszukiwanie odbywa się dwa razy w tym typu wyszukiwanie. Drugie wyszukiwanie jest stosowane do wyniku pierwszego wyszukiwania, aby znaleźć najbardziej odpowiednie wyjście wyszukiwania.

Wymagania wstępne

Utwórz tabelę z danymi w bazie danych MySQL, aby sprawdzić korzystanie z pełnego wyszukiwania w MySQL. Otwórz terminal i połącz się z serwerem MySQL, wykonując następujące polecenie:

$ sudo mysql -u root

Uruchom następujące polecenie, aby utworzyć nazwaną bazę danych test_db:

Utwórz bazę danych test_db;

Uruchom następujące polecenie, aby wybrać bazę danych:

Użyj test_db;

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie klienci z pięcioma dziedzinami:

Utwórz klientów tabeli (
Id int not zerowy klucz podstawowy,
Nazwa varchar (30) nie null,
e -mail varchar (50),
tekst adresu,
contact_no varchar (15));

Uruchom następujące zapytanie wstaw, aby wstawić cztery rekordy do klienci tabela.

Wstaw do „Klienci” („id”, „nazwa”, „e -mail”, „adres”, „contact_no”) wartości)
(„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 ”);

Uruchom następujące polecenie, aby dodać indeks FullText dla adres pole klienci tabela:

Zmieniani klienci Table Dodaj FullText (Adres);

Uruchom następujące polecenie, aby sprawdzić listę zdefiniowanych indeksów klienci tabela:

Pokaż indeks od klientów;

Wyjście
Poniższe dane wyjściowe pokazuje, że istnieją dwa indeksy dla klienci tabela. Jednym z nich jest indeks BTREE, który został domyślnie zdefiniowany dla pola podstawowego, a drugi to wskaźnik pełnotekstowy, który został zdefiniowany później dla adres pole:

Zastosowania wyszukiwania pełnego tekstu

Wyszukiwanie w tabeli przy użyciu różnych trybów indeksu FullText pokazano w tym samouczku.

Wyszukiwanie pełnotekstowe w trybie boolowskim

Poniższe zapytanie wybierz wyszukiwanie słowa 'Dhanmondi' w adres pole klienci Tabela w trybie logicznym. klienci Tabela zawiera tylko jeden rekord pasujący do tego kryterium:

Wybierz * od klientów, gdzie dopasuj się (adres) przeciwko („Dhanmondi” w trybie boolowskim);

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania:

Uruchom następujące zapytanie Wybierz, aby wyszukać oba słowa 'Dhaka ' I 'Jigatola ' w adres pole klienci Tabela za pomocą indeksu FullText w trybie logicznym. W dwóch rzędach w klienci Tabela zawierająca oba słowa 'Dhaka ' I 'Jigatola ':

Wybierz * od klientów
Gdzie mecz (adres) przeciwko („dhaka +jigatola” w trybie logicznym);

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania. Dane wyjściowe pokazuje, że adres pole zawiera 'Dhaka ' I 'Jigatola ':

Uruchom następujące zapytanie Wybierz, aby wyszukać rzędy tabeli klientów, które zawierają słowo 'Dhaka ' ale nie zawiera słowa 'Jigatola ' w adres pole klienci Tabela za pomocą wskaźnika pełnotekstowego w trybie boolowskim. W dwóch rzędach istnieją w klienci Tabela pasująca do kryteriów:

Wybierz * od klientów, gdzie dopasuj się (adres) przeciwko („Dhaka -Jigatola” w trybie boolean);

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania. Dane wyjściowe pokazuje adres pole zawiera 'Dhaka ' ale nie 'Jigatola ':

Wyszukiwanie pełnotekstowe w trybie języka naturalnego

Uruchom następujące polecenie, aby dodać indeks FullText dla nazwa pole klienci tabela:

Zmieniani klienci Table Dodaj FullText (Nazwa);

Poniższe zapytanie wybierz wyszukiwanie słowa 'Sankar ' w nazwa pole klienci Tabela w trybie języka naturalnego. klienci Tabela zawiera dwa rekordy pasujące do tego kryterium:

Wybierz * od klientów
Gdzie dopasuj (nazwa) przeciwko („sarkar” w trybie języka naturalnego);

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania. Rzędy zawierająceSARKAWartość R 'w nazwa Pole zostało pokazane na wyjściu:

Wyszukiwanie pełnotekstowe w trybie rozszerzenia zapytania

Poniższe zapytanie wybierz wyszukiwanie słowa 'laboni ' w nazwa pole klienci Tabela w trybie rozszerzenia zapytania. klienci Tabela zawiera dwa rekordy pasujące do tego kryterium:

Wybierz * od klientów
Gdzie mecz (nazwa) przeciwko („laboni” z rozszerzeniem zapytania);

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania. W wyjściu pole nazwy pierwszego wiersza zawiera słowoLaboni ' innym słowem ”Sarkar ', a pole nazwy drugiego rzędu zawiera pasujące słowo ”Sarkar '.

Upuść indeks FullText

Uruchom następujące polecenie, aby upuścić indeks pełny tekst nazwa pole:

Zmieniaj tabelę klientów upuszcza nazwę indeksu;

Uruchom następujące polecenie, aby sprawdzić bieżącą listę indeksu klienci Tabela po usunięciu indeksu pełnotekstowego z nazwa pole:

Pokaż indeks od klientów;

Wyjście
Następujące dane wyjściowe pojawią się po wykonaniu poprzedniego zapytania. Dane wyjściowe pokazuje, że klienci Tabela zawiera jeden wskaźnik Btree dla ID pole i jeden tekst dla adres pole:

Wniosek

W tym samouczku pokazano różne sposoby wyszukiwania zawartości w tabeli za pomocą indeksu pełnotekstowego, aby pomóc nowym użytkownikom MySQL. Ponadto omówiono pełne funkcje indeksu pełnotekstowego. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i samouczków.