Встречается на собеседованиях • сегодня

Как работает поиск с морфологией в PostgreSQL

PostgreSQL поддерживает морфологический поиск через модуль pg_trgm и полнотекстовый поиск с использованием словарей.

Основные механизмы:

  1. Триграммы (pg_trgm) — разбивают текст на последовательности из 3 символов, позволяя искать похожие слова даже с опечатками.
  2. TSVector/TSQuery — преобразуют текст в лексемы, применяя морфологию (например, приведение слов к начальной форме).

Пример:

sql
-- Создание TSVector с русской морфологией
CREATE TEXT SEARCH CONFIGURATION ru (COPY = russian);
ALTER TEXT SEARCH CONFIGURATION ru ALTER MAPPING FOR word WITH russian_stem;

-- Поиск с учетом морфологии
SELECT * FROM articles 
WHERE to_tsvector('ru', content) @@ to_tsquery('ru', 'бежал');
-- Найдет "бежать", "бежали" и т.д.

Нюансы:

  • Требует настройки словарей (например, russian_stem для русского языка).
  • Для триграм нужен индекс GIN/GIST для скорости.
  • Морфология зависит от качества словаря.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы