PostgreSQL

Príklady fulltextového vyhľadávania PostgreSQL

Príklady fulltextového vyhľadávania PostgreSQL
Akákoľvek databáza by mala mať efektívne a všestranné možnosti vyhľadávania. Kedykoľvek ide o databázu, PostgreSQL je majstrom všetkých remesiel. Kombinuje všetky veci, ktoré ste si na SQL obľúbili, s množstvom databázových funkcií iných ako SQL. Ktorékoľvek z týchto funkcií iných ako SQL, ako napríklad triedenie informácií JSONB, sú fantastické a nemuseli by ste dokonca skúšať inú databázu. Fulltextové vyhľadávanie je jednou z najnovších funkcií iných ako SQL, ktoré sú súčasťou PostgreSQL. Je kompletné textové vyhľadávanie v PostgreSQL úplne funkčné, alebo chcete iný vyhľadávací index? Ak by ste mohli nejako vyvinúť kompletné textové vyhľadávanie zbavené pridania ešte jednej obálky kódu, bol by to fantastický nápad. S vyhľadávaním vzorov v databáze MySQL ste sa už oboznámili. Poďme sa na ne teda najskôr pozrieť. Otvorte shell príkazového riadku PostgreSQL vo vašom počítačovom systéme. Okrem predvolených možností napíšte názov servera, názov databázy, číslo portu, používateľské meno a heslo pre konkrétneho používateľa. Ak potrebujete slogovať s predvolenými úvahami, nechajte všetky možnosti nevyplnené a stlačte kláves Enter each option. V súčasnosti je váš shell príkazového riadku pripravený na prácu.

Aby ste pochopili koncept fulltextového vyhľadávania, musíte si spomenúť na vedomosti o vyhľadávaní vzorov pomocou kľúčového slova LIKE. Predpokladajme teda tabuľku „osoba“ v databáze „test“ s nasledujúcimi záznamami.

>> VYBERTE * OD OSOBY;

Predpokladajme, že chcete načítať záznamy tejto tabuľky, kde stĺpec „name“ má v ktorejkoľvek zo svojich hodnôt znak „i“. Vyskúšajte nasledujúci príkaz SELECT, zatiaľ čo v príkazovom paneli používate klauzulu LIKE. Z výstupu uvedeného nižšie vidíte, že pre tento konkrétny znak „i“ máme v stĺpci „name“ iba 5 záznamov.

>> ZVOLIŤ * OD osoby, KDE JE meno AKO '% i%';

Využitie Tvsector:

Niekedy nie je na použitie rýchleho vyhľadávania ako kľúčové slovo LIKE kľúčové slovo, hoci tam dané slovo je. Možno by ste uvažovali o použití štandardných výrazov, a hoci je to možná alternatíva, regulárne výrazy sú silné a pomalé. Mať procedurálny vektor pre celé slová v texte, ľudový popis týchto slov, je oveľa účinnejším spôsobom riešenia tejto otázky. Na jeho zodpovedanie bol vytvorený koncept kompletného textového vyhľadávania a dátového typu tsvector. V PostgreSQL existujú dve metódy, ktoré robia presne to, čo chceme:

Príklad 01:

Začnime jednoduchou ilustráciou vytvorenia vektora. Predpokladajme, že chcete vytvoriť reťazec: „Niektorí ľudia majú kučeravé hnedé vlasy správnym kefovaním.“. Musíte teda spolu s touto vetou do zátvoriek dotazu SELECT zapísať funkciu to_tvsector (), ako je uvedené nižšie. Z výstupu uvedeného nižšie môžete vidieť, že by priniesol vektor referencií (pozícií súborov) pre každý token a tiež tam, kde sú zámerne ignorované výrazy s malým kontextom, ako sú články (a) a spojky (a, alebo)).

>> SELECT to_tsvector ('Niektorí ľudia majú kučeravé hnedé vlasy po správnom kefovaní');

Príklad 02:

Predpokladajme, že máte dva dokumenty, v ktorých sú niektoré údaje. Na uloženie týchto údajov teraz použijeme skutočný príklad generovania tokenov. Predpokladajme, že ste vytvorili tabuľku „Údaje“ vo svojej databáze „test“ s niektorými stĺpcami pomocou nižšie uvedeného dotazu CREATE TABLE. Nezabudnite v ňom vytvoriť stĺpec typu TVSECTOR s názvom „token“. Z výstupu uvedeného nižšie sa môžete pozrieť na vytvorenú tabuľku.

>> VYTVORIŤ TABUĽKU Údaje (Id SÉRIOVÝ ZÁKLADNÝ KLÍČ, informačný TEXT, token TSVECTOR);

Teraz je na nás, aby sme pridali celkové údaje oboch dokumentov do tejto tabuľky. Skúste to urobiť nasledujúcim príkazom INSERT v prostredí príkazového riadku. Nakoniec boli záznamy z oboch dokumentov úspešne pridané do tabuľky „Údaje“.

>> VLOŽTE DO ÚDAJOV HODNOTY („Dve chyby nemôžu nikdy napraviť jednu.'), („Je to ten, kto môže hrať futbal.'), („Môžem sa na tom podieľať?'), (' Bolesť vo vnútri človeka nemožno pochopiť '), (' Prineste do svojho života broskyňu);

Teraz musíte kolonizovať stĺpec tokenov oboch dokumentov s ich konkrétnym vektorom. Nakoniec jednoduchý dotaz UPDATE vyplní stĺpec tokenov zodpovedajúcim vektorom pre každý súbor. Ak to chcete urobiť, musíte vykonať nižšie uvedený dotaz v príkazovom paneli. Výstup ukazuje, že aktualizácia bola konečne vykonaná.

>> AKTUALIZÁCIA Údaje f1 SET token = to_tsvector (f1.info) FROM Data f2;

Teraz, keď máme všetko pripravené, sa vráťme k našej ilustrácii „môže niekto“ pomocou skenovania. To_tsquery s operátorom AND, ako už bolo povedané, nerobí žiadny rozdiel medzi umiestnením súborov v súboroch, ako je znázornené z výstupu uvedeného nižšie.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('can & one');

Príklad 04:

Aby sme našli slová, ktoré sú „vedľa seba“, skúsime ten istý dotaz pomocou znaku „<->„operátor. Zmena sa zobrazí na výstupe nižšie.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('can <-> jeden ');

Tu je príklad toho, že neexistuje slovo bezprostredne vedľa druhého.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('one <-> bolesť ');

Príklad 05:

Slová, ktoré nie sú bezprostredne vedľa seba, nájdeme pomocou čísla v operátore vzdialenosti na porovnanie vzdialenosti. Blízkosť medzi „priniesť“ a „životom“ je 4 slová od zobrazeného obrázka.

>> SELECT * FROM Data WHERE token @@ to_tsquery ('priniesť <4> život “);

Nižšie je pripojená kontrola blízkosti slov, ktorá obsahuje takmer 5 slov.

>> SELECT * FROM Data WHERE token @@ to_tsquery (nesprávne) <5> správny');

Záver:

Nakoniec ste vykonali všetky jednoduché a komplikované príklady fulltextového vyhľadávania pomocou operátorov a funkcií To_tvsector a to_tsquery.

Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...
Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...
Hry Ako používať AutoKey na automatizáciu hier pre Linux
Ako používať AutoKey na automatizáciu hier pre Linux
AutoKey je obslužný program na automatizáciu stolných počítačov pre systémy Linux a X11, programovaný v programoch Python 3, GTK a Qt. Pomocou jeho fu...