PostgreSQL

Primjeri pretraživanja cjelovitog teksta PostgreSQL

Primjeri pretraživanja cjelovitog teksta PostgreSQL
Svaka baza podataka trebala bi imati učinkovitu i svestranu mogućnost pretraživanja. Kad god se odnosi na baze podataka, PostgreSQL je majstor svih zanata. Kombinira sve stvari koje ste zavoljeli sa SQLom s mnoštvom ne-SQL funkcionalnosti baze podataka. Bilo koja od ovih ne-SQL funkcija, poput vrste podataka JSONB, fantastična je, pa čak ne biste morali isprobati ni drugu bazu. Pretraživanje cijelog teksta jedna je od najnovijih ne-SQL značajki ugrađenih u PostgreSQL. Je li PostgreSQL-ovo cjelovito pretraživanje teksta potpuno funkcionalno ili biste željeli zaseban indeks pretraživanja? Ako nekako uspijete razviti cjelovito pretraživanje teksta bez dodatka još jednog omota koda, bila bi to fantastična ideja. Već ste upoznati s pretraživanjem uzoraka u MySQL bazi podataka. Pa, pogledajmo ih prvo. Otvorite ljusku naredbenog retka PostgreSQL u vašem računalnom sustavu. Napišite naziv poslužitelja, naziv baze podataka, broj porta, korisničko ime i lozinku za određenog korisnika, osim zadanih opcija. Ako trebate slogirati sa zadanim razmatranjima, ostavite sve izbore praznima i pritisnite Enter svaku opciju. Trenutno je vaša ljuska naredbenog retka opremljena za rad.

Da biste razumjeli koncept pretraživanja cijelog teksta, morate se prisjetiti znanja o pretraživanju uzoraka pomoću ključne riječi LIKE. Dakle, pretpostavimo tablicu "osoba" u "testu" baze podataka sa sljedećim zapisima.

>> ODABERI * OD osobe;

Pretpostavimo da želite dohvatiti zapise ove tablice, gdje stupac 'ime' ima znak 'i' u bilo kojoj od svojih vrijednosti. Isprobajte donji upit SELECT dok koristite klauzulu LIKE u naredbenoj ljusci. Iz donjeg rezultata možete vidjeti da imamo samo 5 zapisa za ovaj određeni znak 'i' u stupcu 'ime'.

>> ODABERI * OD osobe GDJE ime KAO '% i%';

Upotreba Tvsectora:

Ponekad je korisno koristiti LIKE Keyword za brzo pretraživanje uzoraka, iako je riječ tu. Možda biste razmislili o korištenju standardnih izraza, i premda je ovo izvediva alternativa, regularni izrazi su i jaki i tromi. Imati proceduralni vektor za cijele riječi u tekstu, zavičajni opis tih riječi, mnogo je učinkovitiji način rješavanja ovog problema. Koncept cjelovitog pretraživanja teksta i tipa podataka tsvector stvoren je da odgovori na njega. Postoje dvije metode u PostgreSQL-u koje rade upravo ono što mi želimo:

Primjer 01:

Počnimo s jednostavnom ilustracijom stvaranja vektora. Pretpostavimo da želite napraviti vektor za niz: „Neki ljudi imaju kovrčavu smeđu kosu pravilnim četkanjem.". Dakle, morate napisati funkciju to_tvsector () zajedno s ovom rečenicom u zagradama SELECT upita kao što je priloženo u nastavku. Iz donjeg izlaza možete vidjeti da bi donio vektor referenci (položaja datoteke) za svaki token, a također i tamo gdje se pojmovi s malo konteksta, poput članaka (i) i veznika (i, ili), namjerno ignoriraju.

>> ODABERITE to_tsvector ('Neki ljudi imaju kovrčave smeđe dlake pravilnim četkanjem');

Primjer 02:

Pretpostavimo da imate dva dokumenta s po nekim podacima u oba. Da bismo pohranili ove podatke, sada ćemo koristiti stvarni primjer generiranja tokena. Pretpostavimo da ste stvorili tablicu 'Podaci' u vašoj bazi podataka 'test' s nekoliko stupaca u njoj koristeći upit CREATE TABLE u nastavku. Ne zaboravite u njemu stvoriti stupac tipa TVSECTOR pod nazivom 'token'. Iz donjeg rezultata možete pogledati tablicu koja je stvorena.

>> IZRADI PODATKE U TABELI (Id PRVENI PRIRODNI KLJUČ, info TEKST, token TSVECTOR);

Sada se pretvara da u ovu tablicu dodamo sveukupne podatke oba dokumenta. Dakle, pokušajte donju naredbu INSERT u ljusci naredbenog retka da biste to učinili. Napokon, zapisi iz oba dokumenta uspješno su dodani u tablicu 'Podaci'.

>> INSERT INTO Data (info) VRIJEDNOSTI ('Dvije pogreške nikada ne mogu ispraviti jednu.'), (' On je taj koji može igrati nogomet.'), (' Mogu li igrati ulogu u ovome?'), (' Ne može se razumjeti bol u čovjeku '), (' Donesite breskvu u svoj život);

Sada morate kolonizirati stupac tokena oba dokumenta s njihovim određenim vektorom. U konačnici, jednostavni UPDATE upit ispunit će stupac žetona odgovarajućim vektorom za svaku datoteku. Dakle, morate izvršiti navedeni donji upit u naredbenoj ljusci da biste to učinili. Rezultat pokazuje da je ažuriranje konačno izvršeno.

>> AŽURIRANJE podataka f1 SET token = to_tsvector (f1.info) IZ podataka f2;

Sad kad smo sve to postavili na mjesto, vratimo se na skeniranje ilustracije "može li netko". Kako to_tsquery s operatorom AND, kao što je prethodno rečeno, ne pravi razliku između mjesta datoteka u datotekama, kao što je prikazano iz rezultata navedenog u nastavku.

>> ODABERITE Id, podatke IZ podataka WHERE token @@ to_tsquery ('can & one');

Primjer 04:

Da bismo pronašli riječi koje su "jedna do druge", pokušat ćemo isti upit s '<->'operater. Promjena je prikazana u donjem izlazu.

>> ODABERITE Id, informacije IZ podataka WHERE token @@ to_tsquery ('can <-> jedan');

Evo primjera da nema neposredne riječi pored druge.

>> ODABERITE Id, informacije IZ podataka WHERE token @@ to_tsquery ('one <-> bol');

Primjer 05:

Pronaći ćemo riječi koje nisu odmah jedna pored druge pomoću broja u operatoru udaljenosti za referenciranje udaljenosti. Blizina između "dovesti" i "života" je 4 riječi, osim prikazane slike.

>> ODABERI * IZ podataka GDJE token @@ to_tsquery ('donijeti <4> život');

Da bi se provjerila blizina između riječi za gotovo 5 riječi, dodaje se u nastavku.

>> ODABERI * IZ podataka WHERE token @@ to_tsquery ('pogrešno <5> pravo');

Zaključak:

Na kraju, napravili ste sve jednostavne i komplicirane primjere pretraživanja cijelog teksta pomoću operatora i funkcija To_tvsector i to_tsquery.

Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Zamijenite svoje tipke miša različito za različiti softver pomoću X-Mouse Button Control
Možda vam treba alat koji bi mogao promijeniti kontrolu miša sa svakom aplikacijom koju koristite. Ako je to slučaj, možete isprobati aplikaciju pod n...