„PostgreSQL“

„PostgreSQL“ viso teksto paieškos pavyzdžiai

„PostgreSQL“ viso teksto paieškos pavyzdžiai
Bet kurioje duomenų bazėje turėtų būti veiksmingos ir universalios paieškos galimybės. Kai tai susiję su duomenų bazėmis, „PostgreSQL“ yra visų amatų meistras. Jis sujungia visus dalykus, kuriuos pamilote su SQL, ir daugybę ne SQL duomenų bazės funkcijų. Bet kuri iš šių ne SQL funkcijų, pvz., JSONB informacijos rūšiavimas, yra fantastiška, ir jums net nereikėtų išbandyti kitos duomenų bazės. Viso teksto paieška yra viena iš naujausių ne „SQL“ funkcijų, įtrauktų į „PostgreSQL“. Ar „PostgreSQL“ viso teksto paieška yra visiškai funkcionali, ar norėtumėte atskiro paieškos indekso?? Jei kaip nors sukursite išsamią teksto paiešką, atimdama dar vieną kodo viršelį, tai būtų fantastiška idėja. Jūs jau susipažinote su šablonų paieška „MySQL“ duomenų bazėje. Taigi, pirmiausia pažvelkime į juos. Atidarykite „PostgreSQL“ komandinės eilutės apvalkalą savo kompiuterio sistemoje. Parašykite konkretaus vartotojo serverio pavadinimą, duomenų bazės pavadinimą, prievado numerį, vartotojo vardą ir slaptažodį, išskyrus numatytąsias parinktis. Jei jums reikia šnipinėti su numatytais svarstymais, palikite visus pasirinkimus tuščius ir paspauskite Enter kiekviena parinktis. Šiuo metu jūsų komandinės eilutės korpusas yra pritaikytas dirbti.

Norėdami suprasti viso teksto paieškos sąvoką, turite prisiminti modelio paieškos žinias naudodami raktinį žodį LIKE. Taigi, tarkime, kad duomenų bazėje „testas“ yra lentelė „asmuo“, kurioje yra šie įrašai.

>> PASIRINKTI * IŠ asmens;

Tarkime, kad norite gauti šios lentelės įrašus, kur stulpelyje „vardas“ bet kurioje iš reikšmių yra simbolis „i“. Išbandykite žemiau pateiktą užklausą SELECT, naudodami komandą-apvalkalą LIKE. Iš žemiau pateiktos išvesties galite pamatyti, kad stulpelyje „vardas“ turime tik 5 šio konkretaus simbolio „i“ įrašus.

>> PASIRINKTI * IŠ asmens, kur vardas panašus į „% i%“;

„Tvsector“ naudojimas:

Kartais nenaudinga naudoti „LIKE“ raktinio žodžio norint greitai atlikti modelio paiešką, nors žodis yra. Galbūt svarstytumėte naudoti standartinius posakius ir nors tai yra įmanoma alternatyva, reguliarūs posakiai yra ir stiprūs, ir vangūs. Turint procedūrinį vektorių visiems žodžiams tekste, liaudiškai apibūdinant tuos žodžius, yra daug efektyvesnis būdas išspręsti šią problemą. Viso teksto paieškos ir duomenų tipo „tsvector“ koncepcija buvo sukurta siekiant į ją reaguoti. „PostgreSQL“ yra du metodai, kurie daro tik tai, ko mes norime:

01 pavyzdys:

Pradėkime nuo paprastos vektoriaus sukūrimo iliustracijos. Tarkime, kad jūs norite padaryti virvelės vektorių: „Kai kurie žmonės, tinkamai valydami plaukus, turi garbanotus rudus plaukus.“. Taigi jūs turite parašyti funkciją to_tvsector () kartu su šiuo sakiniu SELECT užklausos skliausteliuose, kaip nurodyta toliau. Iš žemiau pateiktos išvesties matote, kad kiekvienam žetonui būtų pateiktas nuorodų (failo pozicijų) vektorius, taip pat kai sąmoningai ignoruojami terminai, turintys mažai konteksto, pvz., Straipsniai (the) ir jungtukai (ir, arba).

>> SELECT to_tsvector ('Kai kurie žmonės turi garbanotus rudus plaukus tinkamai valydami plaukus');

02 pavyzdys:

Tarkime, kad turite du dokumentus, kuriuose yra keletas duomenų. Norėdami išsaugoti šiuos duomenis, dabar naudosime tikrą žetonų generavimo pavyzdį. Tarkime, kad sukūrėte lentelę „Duomenys“ savo duomenų bazėje „testas“ su kai kuriais stulpeliais naudodami žemiau pateiktą užklausą KURTI LENTELRE. Nepamirškite jame sukurti „TVSECTOR“ tipo stulpelio pavadinimu „žetonas“. Žemiau pateiktame išvestyje galite pažvelgti į sukurtą lentelę.

>> SUKURTI LENTELĖS duomenis (ID SERIAL PAGRINDINIS RAKTAS, informacijos TEKSTAS, prieigos raktas TSVECTOR);

Dabar mums reikia pridėti bendrus abiejų šios lentelės dokumentų duomenis. Taigi pabandykite tai padaryti žemiau esančią komandą INSERT savo komandinės eilutės apvalkale. Galiausiai abiejų dokumentų įrašai buvo sėkmingai pridėti prie lentelės „Duomenys“.

>> INSERT INTO Data (info) VALUES ('Dvi skriaudos niekada negali padaryti vienos teisingos.'), (' Jis gali žaisti futbolą.'), (' Ar galiu tai atlikti?'), (' Skausmas vieno viduje negali būti suprastas '), (' Įnešk savo gyvenime persikų);

Dabar jūs turite kolonizuoti abiejų dokumentų simbolinį stulpelį su jų konkrečiu vektoriu. Galų gale paprasta UPDATE užklausa užpildys žetonų stulpelį atitinkamu kiekvieno failo vektoriu. Taigi, norėdami tai padaryti, turite įvykdyti žemiau nurodytą užklausą komandos apvalkale. Išvestis rodo, kad atnaujinimas pagaliau atliktas.

>> UPDATE Data f1 SET token = to_tsvector (f1.info) IŠ DUOMENŲ f2;

Dabar, kai visa tai yra vietoje, grįžkime prie „ar galima“ iliustracijos nuskaitymu. To_tsquery su AND operatoriumi, kaip minėta anksčiau, neturi skirtumo tarp failų vietų failuose, kaip parodyta iš toliau nurodytos išvesties.

>> SELECT ID, info FROM Data WHERE žetonas @@ to_tsquery ('gali & vienas');

04 pavyzdys:

Norėdami rasti žodžius, kurie yra „šalia“, mes išbandysime tą pačią užklausą su „<->' operatorius. Pokytis rodomas išvestyje žemiau.

>> SELECT ID, info FROM Data WHERE žetonas @@ to_tsquery ('gali <-> vienas ');

Čia yra pavyzdys, kai šalia kito nėra tiesioginio žodžio.

>> SELECT ID, info FROM Data WHERE žetonas @@ to_tsquery ('vienas <-> skausmas ');

05 pavyzdys:

Žodžius, kurie nėra iškart šalia, naudosime skaičių atstumo operatoriuje, kad pamatytumėte atstumą. Artumas tarp „atnešk“ ir „gyvenimo“ yra 4 žodžiai, išskyrus rodomą vaizdą.

>> PASIRINKTI * IŠ DUOMENŲ KUR žetonas @@ to_tsquery ('atneškite <4> gyvenimas “);

Norėdami patikrinti beveik 5 žodžių artumą tarp žodžių, pridedama žemiau.

>> PASIRINKTI * IŠ DUOMENŲ KUR žetonas @@ to_tsquery ('neteisinga <5> teisė ');

Išvada:

Galiausiai atlikote visus paprastus ir sudėtingus viso teksto paieškos pavyzdžius naudodami To_tvsector ir to_tsquery operatorius ir funkcijas.

Naudingi įrankiai „Linux“ žaidėjams
Jei jums patinka žaisti žaidimus „Linux“ sistemoje, yra tikimybė, kad galbūt naudojote tokias programas ir įrankius kaip „Wine“, „Lutris“ ir „OBS Stud...
„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...
Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...