Понять полнотекстовый поиск с Postgres
Петр Левандовски, @constjs
Таблица контента
- Создать демонстрационные таблицы DB
- Stemmer - строительные документы
- Поиск - строительство запросов
- Практика производительности
- Установка веса и ранжирования
- Улучшить качество поиска
- Дальнейшее чтение
Когда полнотекстовый поиск?
- Поиск по контенту, созданному людьми (не программистами)
- Разделите все больше и менее важные фрагменты документа
- Поиск дамбов базы данных от WikiLeaks
Почему просто не включить?
Regex хорошо найти только простые, конечные языки
Беспомощный для грамматики
Медленно (можно улучшить с помощью индексов триграммы)
Много ловушек даже для простых языков, таких как HTML
Сложный для поддержания, например
^(?=[A-Z0-9][A-Z0-9@._%+-]{5,253}$)[A-Z0-9._%+-]{1,64}@(?:(?=[A-Z0-9-]{1,63}.)[A-Z0-9]+(?:-[A-Z0-9]+)*.){1,8}[A-Z]{2,63}$
Почему постгры?
- Довольно богатый функциями
- Гибкий и расширяемый
- Может быть, у тебя уже есть
- Низкая точка входа
- Если ваш технологический стек уже чрезмерно инженерный