Sqlite fulltekstsøk

Sqlite fulltekstsøk
I databasen brukes FTS5 Virtual Table -komponenten til å gjøre omfattende søk. En virtuell tabell er en SQLite -tilpassbar plugin. En virtuell tabell ligner på en vanlig tabell. Skillet mellom en virtuell tabell og en vanlig tabell vil være der dataene kommer fra. SQLite spør om databaseskjemaet for å skaffe data mens du behandler en vanlig tabell. Hver gang du besøker en virtuell tabell, påkaller Sqlite derimot programkoden for å hente innholdet. Visse aktiviteter, for eksempel å skaffe data fra mange datasett, kan håndteres med tilpasset kode med spesifikk logikk.

La oss komme i gang med denne artikkelen ved å starte SQLite-databasen-C-biblioteket til SQL på systemet ditt. For dette, prøv ut "Sqlite3" -tnøkkelordet som en instruksjon på skallet, og du er god til å gå. Terminalen for SQLite -databasen er lansert. Vi har prøvd .Tabeller instruksjon på spørringsområdet for å liste opp alle de allerede eksisterende tabellene i databasen. Dessverre har vi ingen tabeller i databasen akkurat nå. Dermed må vi lage en tabell for å utføre et fulltekstsøk.

La oss opprette en ny tabelltest i SQLite -databasen ved hjelp av CREATE TABLE -spørringen av databasen. Denne tabellen vil inneholde ID -kolonnen med heltallstype og tittelen på teksttype. Begge kolonnene må ikke være null i henhold til opprett tabellspørsmålet.

Opprett tabelltest (ID INT Primærnøkkel, titteltekst ikke null);

Etter opprettelsen av et testbord, må vi sette noen verdier i det. Vi har lagt til verdiene for både kolonner -ID og tittel som vist. Etter det prøvde vi “Select” -instruksjonen med “*” -tegnet for å hente alle de nylig innsatte postene over en testtabell.

Sett inn test (id, tittel) verdier (1, 'underverker');
Sett inn i test (id, tittel) verdier (2, 'malmisk');
Sett inn test (ID, tittel) verdier (3, 'Doctor Strange');
Sett inn test (id, tittel) verdier (4, 'heldige');
Sett inn test (id, tittel) verdier (5, 'rush'); Velg * fra test;

La oss søke etter fulltekstsøket fra tittelkolonnen i testtabellen der posten samsvarer med “FTS5”.

Velg * fra test der tittelkamp 'FTS5';

La oss gå videre for å utføre et fulltekstsøk på bordet. Fulltekstsøket kan også brukes på de virtuelle tabellene. Dermed må vi lage en ny virtuell tabell. For dette har vi brukt Create Virtual Table -kommandoen sammen med navnet på en tabell, “Data”. Etterfulgt av nøkkelordet ved hjelp av FTS5 og kolonnenavnene i parentesene. Disse kolonnene inneholder ingen datatyper mens opprettelsen av en tabell som FTS5 er blitt brukt.

Lag virtuelle tabelldata ved hjelp av FTS5 (tittel, info);

Etter å ha opprettet den virtuelle tabellen, må vi sette inn poster i de to kolonnene “Tittel”, og “Info” i en tabell “Data”. Så vi har lagt til totalt 5 poster i begge kolonnene "Tittel" og "Info" i en datatabell. Du kan se at kolonnene inneholder tekstverdier som inneholder små og store datamengder innen.

Sett inn data (tittel, info) verdier ('underverker', 'Denne filmen er omtrent 7 venner som sitter fast i underverkets land.

Tjente totalt 230 millioner dollar);

Sett inn data (tittel, info) verdier ('Maleficient', 'Denne filmen handler om fantasi, magi og romantikk berømt om ungdommer. Tjent totalt 300 millioner dollar);
Sett inn data (tittel, info) verdier ('Inception', 'Denne filmen handler om å endre fremtiden din ved å gjøre til drømmer. Tjente totalt 500 millioner dollar);
Sett inn data (tittel, info) verdier ('2020', 'Denne filmen skildrer at verden vil møte slutten i 2020 etter å ha truffet en enorm tsunami. Tjente totalt 600 millioner dollar);
Sett inn data (tittel, info) verdier ('Doctor Strange', 'det handler om magi og bruken av den for å helbrede. Tjente totalt 800 millioner dollar);

Etter å ha lagt til postene, har vi hentet alle dataene ved å bruke Select -instruksjonen med '*' -tegnet i spørringen etterfulgt av navnet på en tabelldata. Det viste alle 5 poster.

La oss søke etter fullteksten i kolonnene i en tabelldata. For dette har vi brukt Select -instruksjonen med den matchende strengen 'FTS5' i spørringen. Where -leddet inneholder betingelsen om at datatabellen må samsvare med strengen 'FTS5' i henhold til samsvars -nøkkelordet. Du kan også erstatte kamp med "=" -operatøren. Det viser seg at det ikke er noen 'fts5' streng i tabellen.

Velg * fra data der datamatch 'FTS5';
Velg * fra data der data = 'fts5';

Så vi har lagt til en ny post i tabellen som inneholder mønsteret 'FTS5' i innholdet. Vi har prøvd innlegget i instruksjon igjen så langt. Etter å ha vist dataene fra en tabelldata igjen, har vi sett at den nylig innsatte posten også er vist.

La oss bruke fulltekstsøket på datatabellen ved hjelp av SELECT-instruksjonen etterfulgt av nøkkelordkampen og strengmønsteret 'FTS5' for å vise de eneste postene som inneholder det spesifikke mønsteret. Den viste en enkelt post på skjermen vår. Det samme spørring.

Velg * fra data der datamatch 'FTS5';
Velg * fra data der data = 'fts5';
Velg * fra data ('fts5');

La oss vise postene til tabellen i den mest til minst relevante rekkefølgen av de innsatte postene. For dette bruker vi alternativet "rang" i spørringen. Så vi har brukt fulltekstsøk for å søke etter teksten 'Wonders' fra tabelldataene via match-nøkkelordet og ordren fra klausuler etter alternativet “rang”. Den viste en enkelt post fra tabellen.

Velg * fra data der Data Match 'Wonders' ordre etter rangering;

En annen måte å utføre et fulltekstsøk er å bruke mønsteret i parentesene etter bordnavnet i Select-instruksjonen.

Velg * fra data ('Magic');

Du kan også bruke fulltekstsøket for å søke etter prefiksmønsterverdiene fra tabellinnholdet. For å bruke prefikser, må du legge til de to første til tre tegnene etterfulgt av “*” -tegnet. Denne prefiksverdien kan brukes i parentesene til SELECT -instruksjonen. Nå viser bruken av “Ro*” den enkeltoppføringen for Maleficent -filmen hvis beskrivelsesinformasjon inneholder prefikset “RO” for “Romance”.

Velg * fra data ('ro *');

Du kan også begrense søket på det ene mønsteret til det andre ved hjelp av ikke -operatøren. Som vi har brukt Magic Not -teksten, viste den dermed to poster for det magiske mønsteret.

Velg * fra data der data samsvarer med 'Magic Not Text';

Konklusjon

Denne guiden handler om bruk av fulltekstsøk i SQLite-databasen som brukes i Ubuntu 20.04. Ved hjelp av FTS5 kan vi søke etter et spesifikt mønster sammen med noen forhold. Denne detaljerte artikkelen vil hjelpe deg med å søke tekst i SQLite.