Какой тип данных для полнотекстового поиска используется в PostgreSQL

«Какой тип данных для полнотекстового поиска используется в PostgreSQL» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для полнотекстового поиска в PostgreSQL используется тип tsvector (хранит обработанный текст) и tsquery (хранит поисковый запрос).

Пример:

-- Создание таблицы с tsvector
CREATE TABLE docs (
    id SERIAL PRIMARY KEY,
    content TEXT,
    content_tsv TSVECTOR
);

-- Заполнение и индексирование
INSERT INTO docs (content) VALUES ('PostgreSQL is a powerful database');
UPDATE docs SET content_tsv = to_tsvector(content) WHERE id = 1;

-- Поиск
SELECT * FROM docs WHERE content_tsv @@ to_tsquery('powerful & database');

Для ускорения можно добавить GIN-индекс:

CREATE INDEX idx_tsv ON docs USING GIN(content_tsv);