Sobes.tech
Junior — Middle

Milline andmete salvestamise mehhanism rakendab täieliku teksti otsingut PostgreSQL andmebaasis?

sobes.tech AI

Vastus AI-lt

PostgreSQL-is täieliku teksti otsingu rakendamiseks kasutatakse GiST (Generalized Search Tree) või GIN (Generalized Inverted Index) indeksi mehhanismi. Põhineb teksti esitamisel tsvector kujul — struktuur, mis jagab teksti leksemiteks (sõnadeks), normaliseerib neid ja salvestab nende positsioonid.

Otsinguks kasutatakse tsquery — päringut, mis võrreldakse tsvectoriga. GIN indeksid on eriti tõhusad kiireks otsinguks mitme sõna puhul, kuna need loovad pööratud indeksi, mis võimaldab kiiresti leida dokumendid, mis sisaldavad vajalikke leksemeid.

Näide indeksi loomise kohta täieliku teksti otsingu jaoks:

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

Seejärel saab teha päringuid:

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