Sobes.tech
Junior — Middle

Koks duomenų saugojimo mechanizmas įgyvendina pilno teksto paiešką PostgreSQL duomenų bazėje?

sobes.tech AI

Atsakymas iš AI

PostgreSQL, norint įgyvendinti pilno teksto paiešką, naudojamas GiST (Generalized Search Tree) arba GIN (Generalized Inverted Index) indeksų mechanizmas. Pagrindas yra teksto vaizdavimas tsvector formatu — struktūra, kuri skirsto tekstą į leksemas (žodžius), normalizuoja juos ir saugo jų pozicijas.

Paieškai naudojamas tsquery — užklausa, kuri lyginama su tsvector. GIN indeksai yra ypač efektyvūs greitai paieškai keliuose žodžiuose, nes kuria atvirkštinį indeksą, leidžiantį greitai rasti dokumentus, turinčius reikiamus leksemus.

Pavyzdys, kaip sukurti indeksą pilno teksto paieškai:

CREATE INDEX idx_fts ON documents USING GIN(to_tsvector('russian', content));

Tada galima vykdyti užklausas:

SELECT * FROM documents WHERE to_tsvector('russian', content) @@ to_tsquery('russian', 'поиск & база');