Kokotekstihakujen johdanto (tsvector, to_tsquery)
Indeksoikaa dokumentteja tsvector-tyypillä, suorittakaa luonnollisen kielen kyselyitä to_tsquery-funktiolla ja järjestäkää tuloksia ts_rank-funktiolla.
Kokotekstihakujen johdanto (tsvector, to_tsquery) on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Miksi kokotekstihaku?
LIKE/ILIKE etsii alimerkkijonoja. Kokotekstihaku ymmärtää sanat: sanavartalot, poistosanat, kielisäännöt ja relevanssin järjestämisen. Se on sisäänrakennettu PostgreSQL:ään — laajennusta ei tarvita.
Kaksi ydintyyppiä
Kokotekstihaku perustuu kahteen tyyppiin:
tsvector— jäsennetty dokumentti: lekseemit + sijainnittsquery— jäsennetty kysely: lekseemit + Boolen operaattorit
Yhdistä ne @@-operaattorilla.
Dokumentin jäsentäminen
Muunna raakateksti tsvector-arvoksi:
SELECT to_tsvector('english', 'The quick brown foxes jump over the lazy dogs');
-- 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
-- Stop words ('the', 'over') dropped; words stemmed (foxes → fox)Kyselyn jäsentäminen
Samoin hakusyöte:
SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'Täsmäytys
Käytä @@-operaattoria testaamiseen:
SELECT to_tsvector('english', 'The lazy fox')
@@ to_tsquery('english', 'fox'); -- TRUEDokumenttitaulun indeksointi
Lisää tsvector-sarake ja GIN-indeksi nopeita kyselyitä varten:
CREATE TABLE articles (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL
);
-- Either keep a generated tsvector column:
ALTER TABLE articles
ADD COLUMN search_doc tsvector
GENERATED ALWAYS AS (
to_tsvector('english',
coalesce(title,'') || ' ' || coalesce(body,'')
)
) STORED;
CREATE INDEX articles_search_idx ON articles USING GIN (search_doc);Haku
Indeksin avulla kyselyt ovat nopeita:
SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;Boolen operaattorit kyselyissä
tsquery tukee operaattoreita & (AND), | (OR), ! (NOT) sekä ryhmittelyä:
to_tsquery('english', '(cat | dog) & !rabbit');Lausekehaku
Käytä <->-operaattoria vierekkäisille sanoille:
to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'Helppokäyttöiset verkkokyselyt: websearch_to_tsquery
Hyväksy Google-tyyliset kyselyt:
SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');Tulosten järjestäminen relevanssin mukaan
Laske järjestysarvo ts_rank- tai ts_rank_cd-funktiolla:
SELECT id, title,
ts_rank(search_doc, query) AS rank
FROM articles, to_tsquery('english', 'postgres & json') AS query
WHERE search_doc @@ query
ORDER BY rank DESC
LIMIT 20;Korostaminen
Näytä osumat sisältävät katkelmat:
SELECT ts_headline('english', body,
to_tsquery('english', 'postgres & json'),
'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');Kertaus
Kokotekstihaku on sisäänrakennettu PostgreSQL:ään.
tsvector+tsquery+@@- GIN-indeksi nopeutta varten
- websearch_to_tsquery ihmisen kirjoittamille syötteille
- ts_rank relevanssin mukaiseen järjestämiseen
Pikatesti
Millä operaattorilla tsvector-arvoa verrataan tsquery-arvoon?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”Kokotekstihakujen johdanto (tsvector, to_tsquery)” ilmainen?
Kyllä – oppitunnin ”Kokotekstihakujen johdanto (tsvector, to_tsquery)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kokotekstihakujen johdanto (tsvector, to_tsquery)”?
Indeksoikaa dokumentteja tsvector-tyypillä, suorittakaa luonnollisen kielen kyselyitä to_tsquery-funktiolla ja järjestäkää tuloksia ts_rank-funktiolla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Kokotekstihakujen johdanto (tsvector, to_tsquery)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Merkkijonojen yhdistäminen: || ja CONCAT
- UPPER, LOWER, SUBSTRING, REPLACE
- TRIM, LPAD, RPAD
- Kokotekstihakujen johdanto (tsvector, to_tsquery)