Sobes.tech
Junior — Middle

Jaký mechanismus ukládání dat implementuje fulltextové vyhledávání v databázi PostgreSQL?

sobes.tech AI

Odpověď od AI

V PostgreSQL se pro implementaci fulltextového vyhledávání používá mechanismus indexů typu GiST (Generalized Search Tree) nebo GIN (Generalized Inverted Index). Základem je reprezentace textu ve formě tsvector, což je struktura, která rozděluje text na lexémy (slova), normalizuje je a ukládá jejich pozice.

Pro vyhledávání se používá tsquery, což je dotaz, který se porovnává s tsvector. Indexy GIN jsou obzvlášť efektivní pro rychlé hledání ve více slovech, protože vytvářejí invertovaný index, který umožňuje rychle najít dokumenty obsahující požadované lexémy.

Příklad vytvoření indexu pro fulltextové vyhledávání:

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

Poté lze provádět dotazy:

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