MySQL FullText Searching

MySQL FullText Searching
MySQL utilizza un indice generale per le colonne della tabella per rendere più veloce la ricerca e questo tipo di ricerca è chiamato Btree Index. Un altro tipo di indice è l'indice FullText, che è diverso dall'indice BTREE. L'indice FullText viene utilizzato per cercare una particolare parola chiave nel testo anziché il valore specifico nelle colonne indicizzate. L'indice BTREE e l'indice FullText possono essere applicati alla stessa colonna della tabella.

Caratteristiche dell'indice FullText

  1. Può essere applicato ai campi Char, Varchar e testo della tabella.
  2. Supporta motori di archiviazione innodb e myisam.
  3. È usato solo con le clausole match () e contro ()

Tipi di modalità di ricerca fulltex

Tre tipi di ricerca possono essere realizzati utilizzando l'indice FullText, che è spiegato di seguito:

1. Modalità booleana
Questo tipo di ricerca viene utilizzato per le query che contengono operatori booleani, come un operatore inferiore a (''), più segno ('+'), meno segno ('-'), doppie citazioni (“”), operatore jolly ( '*), eccetera.

2. Modalità linguistica naturale
Il tipo di ricerca predefinito interpreta la stringa di ricerca come fase letterale.

3. Modalità di espansione delle query
La ricerca viene eseguita due volte in questo tipo di ricerca. La seconda ricerca viene applicata al risultato della prima ricerca per scoprire l'output di ricerca più pertinente.

Prerequisiti

Crea una tabella con i dati in un database MySQL per verificare l'uso della ricerca FullText in MySQL. Apri il terminale e connettiti al server MySQL eseguendo il seguente comando:

$ sudo mysql -u root

Esegui il comando seguente per creare un database denominato test_db:

Crea database test_db;

Esegui il comando seguente per selezionare il database:

Usa test_db;

Esegui la seguente query per creare una tabella denominata clienti Con cinque campi:

Crea clienti Table (
id int non null Key primario,
Nome varchar (30) non null,
Email Varchar (50),
Testo di indirizzo,
contact_no varchar (15));

Eseguire la seguente query di inserimento per inserire quattro record nel clienti tavolo.

Inserisci in "Clienti" ("id", "nome", "email", "indirizzo", "contact_no") valori
("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 ');

Eseguire il comando seguente per aggiungere l'indice FullText per il indirizzo campo del clienti tavolo:

Alterazioni dei clienti della tabella Aggiungi FullText (indirizzo);

Eseguire il comando seguente per verificare l'elenco degli indici definiti del clienti tavolo:

Mostrare l'indice dai clienti;

Produzione
Il seguente output mostra che esistono due indici per il clienti tavolo. Uno è l'indice BTREE che è stato definito per impostazione predefinita per il campo primario e un altro è l'indice completo che è stato definito in seguito per il indirizzo campo:

Usi della ricerca FullText

La ricerca nella tabella utilizzando diverse modalità dell'indice FullText è stata mostrata in questo tutorial.

Ricerca FullText in modalità booleana

Le seguenti query selezionate cercheranno la parola 'Dhanmondi' nel indirizzo campo del clienti Tabella in modalità booleana. IL clienti La tabella contiene solo un record corrispondente a questo criterio:

Seleziona * da clienti Where Match (indirizzo) contro ('dhanmondi' in modalità booleana);

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente:

Esegui la seguente query Seleziona per cercare entrambe le parole "Dhaka ' E 'Jigatola ' nel indirizzo campo del clienti Tabella utilizzando l'indice FullText in modalità booleana. Ci sono due file in clienti Tabella che contengono entrambe le parole, 'Dhaka ' E 'Jigatola ':

Seleziona * dai clienti
Dove corrisponde (indirizzo) contro ('dhaka +jigatola' in modalità booleana);

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente. L'output mostra che il indirizzo il campo contiene 'Dhaka ' E 'Jigatola ':

Esegui le seguenti query Seleziona per cercare tali righe della tabella dei clienti che contengono la parola 'Dhaka ' ma non contiene la parola 'Jigatola ' nel indirizzo campo del clienti Tabella usando l'indice FullText in modalità booleana. Esistono due file nel clienti Tabella che corrisponde ai criteri:

Seleziona * da clienti Where Match (indirizzo) contro ('dhaka -jigatola' in modalità booleana);

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente. L'output mostra il file indirizzo il campo contiene 'Dhaka ' ma no 'Jigatola ':

Ricerca fulltex in modalità linguale

Eseguire il comando seguente per aggiungere l'indice FullText per il nome campo del clienti tavolo:

ALTER TABLE Clienti Aggiungi FullText (nome);

Le seguenti query selezionate cercheranno la parola 'Sankar ' nel nome campo del clienti Tabella in modalità linguistica naturale. IL clienti La tabella contiene due record corrispondenti a questo criterio:

Seleziona * dai clienti
Dove abbina (nome) contro ('Sarkar' in modalità linguistica naturale);

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente. Le righe che contengono il 'Sarkar 'valore nel nome Il campo è stato mostrato nell'output:

Ricerca FullText in modalità di espansione delle query

Le seguenti query selezionate cercheranno la parola 'Laboni ' nel nome campo del clienti Tabella in modalità di espansione delle query. IL clienti La tabella contiene due record corrispondenti a questo criterio:

Seleziona * dai clienti
Dove corrisponde (nome) contro ("laboni" con espansione delle query);

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente. Nell'output, il campo Nome della prima riga contiene la parola "Laboni ' con un'altra parola, "Sarkar ', E il campo Nome della seconda riga contiene la parola corrispondente, "Sarkar '.

Drop FullText Index

Eseguire il comando seguente per rilasciare l'indice FullText di nome campo:

Alter Table Clienti Drop Drop Nome;

Eseguire il seguente comando per verificare l'elenco dell'indice corrente del clienti Tabella dopo aver rimosso l'indice FullText dal nome campo:

Mostrare l'indice dai clienti;

Produzione
Verrà visualizzato il seguente output dopo aver eseguito la query precedente. L'output mostra che il clienti La tabella contiene un indice BTREE per il id campo e un testo completo per il indirizzo campo:

Conclusione

I diversi modi di cercare il contenuto in una tabella utilizzando l'indice FullText sono stati mostrati in questo tutorial per aiutare i nuovi utenti MySQL a imparare gli usi della ricerca FullText in MySQL. Inoltre, sono state discusse le caratteristiche complete per l'indice FullText. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e tutorial.