Перейти к содержимому
7 / 10

Полнотекстовый поиск в PostgreSQL или выделенный движок: где граница?

PostgreSQL умеет полнотекстовый поиск через tsvector/tsquery с GIN-индексом, ранжированием ts_rank, словарями и стеммерами, а через pg_trgm — ещё и опечатки с поиском подстроки. Этого достаточно, когда корпус до нескольких миллионов документов, требования к релевантности умеренные, а главное преимущество — отсутствие второй системы: нет рассинхронизации, поиск работает в одной транзакции с данными и не требует отдельной инфраструктуры. Выделенный движок нужен, когда появляются: сложное ранжирование с бустами и правилами, фасетная навигация с агрегациями по десяткам полей, подсказки и автодополнение, поиск по гибридной модели с векторами, многоязычность с разными анализаторами, объёмы в десятки миллионов документов с высокой частотой запросов. Практическое правило: начинать в PostgreSQL, переезжать по конкретным симптомам — медленный ts_rank на больших выборках, потребность в фасетах и настраиваемой релевантности.

Полнотекстовый поиск в PostgreSQL или выделенный движок: где граница? | JScriptiser