Junior — Middle
Aký mechanizmus ukladania údajov implementuje plnotextové vyhľadávanie v databáze PostgreSQL?
sobes.tech AI
Odpoveď od AI
V PostgreSQL sa na implementáciu fulltextového vyhľadávania používa mechanizmus indexov typu GiST (Generalized Search Tree) alebo GIN (Generalized Inverted Index). Základom je reprezentácia textu vo forme tsvector, čo je štruktúra, ktorá rozdeľuje text na lexémy (slová), normalizuje ich a ukladá ich pozície.
Pre vyhľadávanie sa používa tsquery, čo je dotaz, ktorý sa porovnáva s tsvector. Indexy GIN sú obzvlášť efektívne pre rýchle hľadanie vo viacerých slovách, pretože vytvárajú invertovaný index, ktorý umožňuje rýchlo nájsť dokumenty obsahujúce požadované lexémy.
Príklad vytvorenia indexu pre fulltextové vyhľadávanie:
CREATE INDEX idx_fts ON documents USING GIN(to_tsvector('russian', content));
Následne je možné vykonávať dotazy:
SELECT * FROM documents WHERE to_tsvector('russian', content) @@ to_tsquery('russian', 'поиск & база');