Junior — Middle
Ce mecanism de stocare a datelor implementează căutarea full-text în baza de date PostgreSQL?
sobes.tech AI
Răspuns de la AI
În PostgreSQL, pentru implementarea căutării full-text, se utilizează mecanismul de indecși de tip GiST (Generalized Search Tree) sau GIN (Generalized Inverted Index). Baza este reprezentarea textului sub formă de tsvector, o structură care împarte textul în leme (cuvinte), le normalizează și stochează pozițiile.
Pentru căutare, se folosește tsquery, o interogare comparată cu tsvector. Indecșii GIN sunt deosebit de eficienți pentru căutări rapide pe mai multe cuvinte, deoarece construiesc un index inversat care permite găsirea rapidă a documentelor ce conțin lemele necesare.
Exemplu de creare a unui index pentru căutare full-text:
CREATE INDEX idx_fts ON documents USING GIN(to_tsvector('russian', content));
Apoi, se pot executa interogări:
SELECT * FROM documents WHERE to_tsvector('russian', content) @@ to_tsquery('russian', 'поиск & база');