PostgreSQL

PostgreSQL täistekstiotsingu näited

PostgreSQL täistekstiotsingu näited
Igas andmebaasis peaks olema tõhus ja mitmekülgne otsimisvõimalus. Alati, kui see viitab andmebaasidele, on PostgreSQL kõigi käsitöömeister. See ühendab kõik need asjad, mida olete SQL-i jaoks armastanud, koos paljude muude kui SQL-i andmebaasifunktsioonidega. Kõik need mitte-SQL-funktsioonid, näiteks JSONB-i teabe sortimine, on fantastilised ja te ei peaks isegi teist andmebaasi proovima. Täistekstiotsing on üks uusimaid mitte-SQL-funktsioone, mis on integreeritud PostgreSQL-i. Kas PostgreSQL-i terviktekstotsing on täiesti toimiv või soovite eraldi otsinguindeksit?? Kui suudate kuidagi arendada täieliku tekstiotsingu, ilma et oleks vaja lisada veel üht koodikatet, oleks see fantastiline idee. Sa oled juba tutvunud mustrite otsimisega MySQL-i andmebaasis. Niisiis, vaatame neid kõigepealt. Avage arvutisüsteemis PostgreSQL käsurea kest. Kirjutage konkreetse kasutaja jaoks serveri pealkiri, andmebaasi nimi, pordi number, kasutajanimi ja parool peale vaikevalikute. Kui peate vaikimisi kaaluma, jätke kõik valikud tühjaks ja vajutage sisestage iga valik. Praegu on teie käsurea kest töötamiseks varustatud.

Täistekstiotsingu mõiste mõistmiseks peate LIKE märksõna kaudu meenutama mustriotsingu teadmisi. Oletame, et andmebaasis "test" on tabel "inimene", milles on järgmised kirjed.

>> VALI * INIMESELT;

Oletame, et soovite hankida selle tabeli kirjed, kus veerus 'name' on mis tahes väärtuses märk 'i'. Proovige käsu-shellis LIKE-klausli kasutamise ajal allpool päringut SELECT. Allpool olevast väljundist näete, et meil on veerus „nimi” ainult 5 kirjet selle konkreetse märgi „i” jaoks.

>> VALI * FROM isik, KUS nimi NAGU '% i%';

Televisiooni kasutamine:

Mõnikord ei ole LIKE märksõna kasutamine mustri kiireks otsimiseks kasulik, kuigi see sõna on olemas. Võib-olla kaaluksite standardväljendite kasutamist ja kuigi see on teostatav alternatiiv, on regulaaravaldised nii tugevad kui ka aeglased. Protseduurivektori olemasolu tervetes sõnades, nende sõnade rahvakeelne kirjeldus, on selle probleemi lahendamiseks palju tõhusam viis. Sellele reageerimiseks loodi täieliku tekstiotsingu mõiste ja andmetüüp tsvector. PostgreSQL-is on kaks meetodit, mis teevad just seda, mida me tahame:

Näide 01:

Alustame vektori loomise lihtsast illustreerimisest. Oletame, et soovite stringile vektori teha: „Mõnel inimesel on korraliku harjamise abil lokkis pruunid juuksed.”. Seega peate kirjutama funktsiooni to_tvsector () koos selle lausega allpool lisatud SELECT päringu sulgudesse. Allpool olevast väljundist näete, et see annab iga loa jaoks viite (faili positsiooni) vektori ja ka siis, kui sihilikult eiratakse väikese kontekstiga termineid, näiteks artikleid (ja) ning sidesõnu (ja või.

>> SELECT to_tsvector ('Mõnel inimesel on korraliku harjamise abil lokkis pruunid juuksed');

Näide 02:

Oletame, et teil on kaks dokumenti, milles mõlemas on mõned andmed. Nende andmete salvestamiseks kasutame nüüd tõelist näidiste loomise märke. Oletame, et olete oma andmebaasi "test" loonud tabeli "Andmed" ja selles on mõned veerud, kasutades allpool päringut LOO TABEL. Ärge unustage luua sellesse veergu TVSECTOR, mille nimi on „märk”. Allpool olevast väljundist saate vaadata loodud tabelit.

>> LOE TABELI ANDMED (Id SERIAL PRIMARY KEY, info TEXT, token TSVECTOR);

Nüüd tuleb meil lisada selles tabelis mõlema dokumendi üldandmed. Nii proovige selleks oma käsurea kestas allpool olevat INSERT käsku. Lõpuks on mõlema dokumendi kirjed edukalt lisatud tabelisse „Andmed”.

>> INSERT INTO Data (info) VÄÄRTUSED ('Kaks eksimust ei saa kunagi ühte õigeks teha.'), (' Tema saab mängida jalgpalli.'), (' Kas ma saan selles osaleda?'), (' Valu inimese sees ei saa mõista '), (' Too virsik oma ellu);

Nüüd peate koloniseerima mõlema dokumendi märgistusveeru nende konkreetse vektoriga. Lõppkokkuvõttes täidab lihtne UPDATE päring žetoonide veeru iga faili vastava vektoriga. Niisiis peate selleks tegema käsu-shellis allpool toodud päringu. Väljund näitab, et värskendus on lõplikult tehtud.

>> UPDATE Data f1 SET märgis = to_tsvector (f1.info) FROM Data f2;

Nüüd, kui see kõik on meil paigas, naaseme skannimisega "kas saab" illustratsiooni juurde. Nagu operaatoriga AND__squery, nagu varem öeldud, pole vahet failide asukohtades failides, nagu on näidatud allpool toodud väljundis.

>> SELECT ID, info FROM Data WHERE märgist @@ to_tsquery ('saab & üks');

Näide 04:

Sõnade leidmiseks, mis asuvad üksteise kõrval, proovime sama päringut '<->'operaator. Muudatus kuvatakse allpool olevas väljundis.

>> SELECT ID, info FROM Data WHERE märgist @@ to_tsquery ('saab <-> üks ');

Siin on näide otsestest sõnadest teise kõrval.

>> SELECT ID, info FROM Data WHERE märgist @@ to_tsquery ('üks <-> valu ');

Näide 05:

Leiame sõnad, mis pole kohe üksteise kõrval, kasutades kauguse viitamiseks numbrit kaugusoperaatoris. Too ja elu lähedus on kuvatavast pildist 4 sõna kaugusel.

>> SELECT * FROM Data WHERE märk @@ to_tsquery ('tooma <4> elu ');

Ligi 5 sõna sõnade läheduse kontrollimiseks on lisatud allpool.

>> SELECT * FROM Data WHERE märk @@ to_tsquery ('vale <5> paremal ');

Järeldus:

Lõpuks olete teinud kõik lihtsad ja keerukad täistekstiotsingu näited, kasutades To_tvsectori ja to_tsquery operaatoreid ja funktsioone.

Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...
Kursor hüppab või liigub juhuslikult Windows 10-s kirjutamise ajal
Kui leiate, et hiire kursor hüppab või liigub Windowsi sülearvutisse või arvutisse kirjutades automaatselt, juhuslikult, võivad mõned neist soovituste...
Kuidas muuta hiire ja puuteplaatide kerimise suund Windows 10-s ümber
Hiir ja PuuteplaatNeed muudavad arvutamise mitte ainult lihtsaks, vaid ka tõhusamaks ja vähem aeganõudvaks. Me ei kujuta ette elu ilma nende seadmetet...