MySQL FullText Searching

MySQL FullText Searching
MySQL bruker en generell indeks for kolonnene i tabellen for å gjøre søket raskere, og denne typen søk kalles Btree -indeksen. En annen type indeks er FullText -indeksen, som er forskjellig fra Btree -indeksen. FullText Index brukes til å søke i et bestemt nøkkelord i teksten i stedet for den spesifikke verdien i de indekserte kolonnene. BTREE -indeksen og fulltekstindeksen kan brukes på samme kolonne i tabellen.

Funksjoner i FullText Index

  1. Det kan brukes på tabellen Char, Varchar og tekstfelt.
  2. Den støtter innodb- og myisam -lagringsmotorer.
  3. Det brukes bare med match () og mot () klausuler

Typer fulltekstsøkemodus

Tre typer søk kan oppnås ved å bruke FullText -indeksen, som er forklart nedenfor:

1. Boolsk modus
Denne typen søk brukes til spørsmålene som inneholder boolske operatører, for eksempel mindre enn ('') operatør, pluss tegn ('+'), minustegn ('-'), doble sitater (""), Wildcard Operator ( '*), etc.

2. Naturlig språkmodus
Standard søketype tolker søkestrengen som en bokstavelig fase.

3. Spørringsmodus
Søket gjøres to ganger i denne søketypen. Det andre søket brukes på resultatet av det første søket for å finne ut den mest relevante søkeutgangen.

Forutsetninger

Lag en tabell med data i en MySQL -database for å sjekke bruken av fulltekstsøk i MySQL. Åpne terminalen og koble til MySQL -serveren ved å utføre følgende kommando:

$ sudo mysql -u root

Kjør følgende kommando for å opprette en database som heter test_db:

Opprette databasetest_db;

Kjør følgende kommando for å velge databasen:

Bruk test_db;

Kjør følgende spørsmål for å opprette en tabell som heter Kunder med fem felt:

Lag bordkunder (
id int ikke null primærnøkkel,
Navn varchar (30) ikke null,
E -post varchar (50),
Adresse tekst,
Kontakt_no varchar (15));

Kjør følgende sett inn spørring for å sette inn fire poster i Kunder bord.

Sett inn 'kunder' ('id', 'navn', 'e -post', 'adresse', 'contact_no') verdier
('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 ');

Kjør følgende kommando for å legge til FullText -indeksen for adresse felt av Kunder bord:

ALTER TABLE -kunder legger til fulltekst (adresse);

Kjør følgende kommando for å sjekke listen over de definerte indeksene for Kunder bord:

Vis indeks fra kunder;

Produksjon
Følgende utgang viser at to indekser eksisterer for Kunder bord. Den ene er Btree -indeksen som er definert som standard for det primære feltet, og en annen er FullText -indeksen som er blitt definert senere for adresse felt:

Bruk av fulltekstsøk

Søket i tabellen ved hjelp av forskjellige moduser for FullText -indeksen er vist i denne opplæringen.

Fulltekstsøk i boolsk modus

Følgende utvalgte spørring vil søke på ordet 'Dhanmondi'I adresse felt av Kunder Tabell i boolsk modus. De Kunder Tabellen inneholder bare en post som samsvarer med dette kriteriet:

Velg * fra kunder der match (adresse) mot ('dhanmondi' i boolsk modus);

Produksjon
Følgende utgang vises etter å ha utført forrige spørring:

Kjør følgende velg spørring for å søke på begge ordene, 'Dhaka ' og 'Jigatola ' i adresse felt av Kunder Tabell ved å bruke FullText -indeksen i boolsk modus. Det er to rader i Kunder tabell som inneholder begge ordene, 'Dhaka ' og 'Jigatola ':

Velg * fra kunder
Hvor match (adresse) mot ('dhaka +jigatola' i boolsk modus);

Produksjon
Følgende utdata vises etter å ha utført forrige spørring. Utgangen viser at adresse Feltet inneholder 'Dhaka ' og 'Jigatola ':

Kjør følgende velg spørring for å søke på de radene i kundetabellen som inneholder ordet 'Dhaka ' men inneholder ikke ordet 'Jigatola ' i adresse felt av Kunder Tabell ved hjelp av fulltekstindeks i boolsk modus. To rader eksisterer i Kunder Tabell som samsvarer med kriteriene:

Velg * fra kunder der match (adresse) mot ('dhaka -jigatola' i boolsk modus);

Produksjon
Følgende utdata vises etter å ha utført forrige spørring. Utgangen viser adresse Feltet inneholder 'Dhaka ' men ikke 'Jigatola ':

Fulltekstsøk i naturlig språkmodus

Kjør følgende kommando for å legge til FullText -indeksen for Navn felt av Kunder bord:

ALTER TABLE -kunder legger til fulltekst (navn);

Følgende utvalgte spørring vil søke på ordet 'Sankar ' i Navn felt av Kunder Tabell i naturlig språkmodus. De Kunder Tabellen inneholder to poster som samsvarer med dette kriteriet:

Velg * fra kunder
Hvor match (navn) mot ('sarkar' i naturlig språkmodus);

Produksjon
Følgende utdata vises etter å ha utført forrige spørring. Radene som inneholder 'Sarkar 'verdi i Navn Feltet er vist i utgangen:

Fulltekstsøk i spørringsmodus

Følgende utvalgte spørring vil søke på ordet 'laboni ' i Navn felt av Kunder Tabell i spørringsmodus. De Kunder Tabellen inneholder to poster som samsvarer med dette kriteriet:

Velg * fra kunder
Hvor match (navn) mot ("laboni" med spørringsutvidelse);

Produksjon
Følgende utdata vises etter å ha utført forrige spørring. I utgangen inneholder navnefeltet til den første raden ordet 'Laboni ' med et annet ord, 'Sarkar ', og navnet på den andre raden inneholder det matchende ordet, 'Sarkar '.

Slipp fulltekstindeks

Kjør følgende kommando for å slippe fulltekstindeksen til Navn felt:

ALTER TABLE -kunder Drop Index Name;

Kjør følgende kommando for å sjekke gjeldende indeksliste over Kunder tabell etter å ha fjernet fulltekstindeksen fra Navn felt:

Vis indeks fra kunder;

Produksjon
Følgende utdata vises etter å ha utført forrige spørring. Utgangen viser at Kunder Tabellen inneholder en Btree -indeks for id felt og en fulltekst for adresse felt:

Konklusjon

De forskjellige måtene å søke på innhold i en tabell ved hjelp av FullText -indeksen har blitt vist i denne opplæringen for å hjelpe de nye MySQL -brukerne å lære bruken av fulltekstsøk i MySQL. I tillegg ble de fulle funksjonene for FullText -indeksen diskutert. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.