Sobes.tech
Junior — Middle

Кой механизъм за съхранение на данни реализира пълнотекстово търсене в базата данни PostgreSQL?

sobes.tech AI

Отговор от AI

В PostgreSQL за реализиране на пълнотекстово търсене се използва механизъм за индекси тип GiST (Generalized Search Tree) или GIN (Generalized Inverted Index). Основата е представянето на текста във вид на tsvector — структура, която разделя текста на лексеми (думи), нормализира ги и съхранява позициите им.

При търсене се използва tsquery — заявка, която се сравнява с tsvector. Индексите GIN са особено ефективни за бързо търсене по множество думи, тъй като създават обратен индекс, който позволява бързо намиране на документи, съдържащи необходимите лексеми.

Пример за създаване на индекс за пълнотекстово търсене:

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

След това могат да се изпълняват заявки:

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