3
Зачем текстовый поиск?
Средства SQL — LIKE, регулярные выражения
нет морфологического поиска
нет возможности ранжирования результатов
нет индексной поддержки
Внешние поисковые системы
сложно синхронизировать с базой данных
отсутствие транзакционности
нет доступа к метаданным
сложности с разграничением доступа
В инструментарии SQL уже есть средства поиска по тексту. Это и
совсем простые команды LIKE и ILIKE, и упрощенные регулярные
выражения SIMILAR TO, и полноценные регулярные выражения
(оператор ~). Зачем нужен отдельный механизм?
Имеющиеся средства не позволяют искать с учетом разных словоформ,
не позволяют отранжировать результаты по релевантности, имеют
ограниченную индексную поддержку (для простого случая префиксного
поиска, либо с помощью триграмм, как было показано в практике темы
«Классы операторов»).
Для поиска можно использовать внешние поисковые системы. Но и они
имеют ряд ограничений, которые невозможно преодолеть из-за того,
что такие системы оторваны от базы данных. Их сложно
синхронизировать с актуальным содержимым БД; они не
транзакционны; они видят только те документы, которые им
показывают, и не видят остальной информации в базе; сложно
реализовать разграничение прав доступа к информации.
Полнотекстовый поиск позволяет преодолеть ограничения обычных
средств SQL и сохранить все их преимущества.