Когда на сайте нужно реализовать поиск по названиям товаров, стандартный LIKE-поиск в MySQL быстро становится узким местом — он работает медленно и нередко пропускает нужные результаты.
Чтобы решить эту проблему, в компании «Хостинг Украина» мы используем Manticore Search — быструю и лёгкую систему для полнотекстового поиска. Важно понимать, что Manticore Search не заменяет MySQL, а дополняет её, ускоряя поиск по текстовым данным и улучшая релевантность результатов.
Почему именно Manticore Search
🚀 Скорость
Manticore Search способен обрабатывать десятки миллионов документов за доли секунды. Мы протестировали систему на 31 млн документов (около 488 ГБ данных из реестра судебных решений 2021–2025 гг.). Размер индекса составил 187 ГБ, а поиск по нему выполняется мгновенно — там, где обычный SQL-запрос занял бы минуты.
Благодаря этому можно реализовать подсказки в реальном времени — результаты появляются прямо во время набора текста пользователем.
🎯 Релевантность
Manticore возвращает документы, отсортированные по релевантности. Это значит, что самые точные совпадения будут первыми. Разработчику не нужно писать сложные формулы для сортировки — всё работает из коробки.
Использовать ли Manticore для маленьких баз?
Да! Даже если у вас всего несколько тысяч записей, использование Manticore оправдано, если поиск выполняется часто и важна скорость. Индекс занимает немного места и обновляется быстро.
Sphinx vs Manticore Search
Manticore Search — это развитие популярной ранее системы Sphinx. Главное преимущество Manticore — возможность изменять индекс без полной переиндексации данных. Это особенно полезно, когда объём данных большой и важно минимизировать время обновления индексов.
Создание таблицы в Manticore Search
В панели управления Manticore есть удобный интерфейс для создания таблиц. У каждого поля можно указать параметры хранения:
- Indexed — по полю строится полнотекстовый индекс.
- Stored — данные сохраняются в таблице.

Пример настройки
Если данные хранятся в MySQL, а Manticore используется только для поиска, достаточно отметить поле text как Indexed, а Stored — убрать.
Такой подход даёт два преимущества:
- Экономия места — хранится только индекс.
- Более быстрая индексация — меньше данных записывается на диск.
В нашем тесте мы не сохраняли 488 ГБ данных, а только индекс (187 ГБ). При поиске Manticore возвращает идентификаторы документов, а MySQL по первичному ключу быстро находит сами документы.
Если данных немного — можно хранить и текст, чтобы отдавать результаты без дополнительных запросов к MySQL.
Быстрый старт
Чтобы начать работу с Manticore Search, следуйте этим шагам:
- Создайте таблицу с нужной структурой через панель управления. Для текстовых полей тип
textавтоматически добавляетstoredиindexed. - Подключитесь к Manticore как к MySQL — логин и пароль не требуются. Доступ ограничивается по IP-адресам, которые задаются в панели управления.
- Вставляйте данные с помощью команды
REPLACE, а неINSERTилиUPDATE. Это важно: приUPDATEиндекс не обновляется. - Выполните поисковый запрос — его можно протестировать как из скрипта, так и из интерфейса панели.
SELECT *, WEIGHT()
FROM table
WHERE MATCH('test')
ORDER BY WEIGHT() DESC
LIMIT 100Минимальная длина искомого слова
По умолчанию индексируются слова длиной 3+ символа.
За это отвечает параметр min_word_len.
Если пользователи часто ищут короткие термины вроде MX, NS, UI, уменьшите значение этого параметра до 2.
Префиксы (min_prefix_len)
Определяет минимальную часть слова, по которой оно будет найдено.
Например, при min_prefix_len=3 слова «сервер» и «сервис» будут найдены по запросу «сер».
Инфиксы (min_infix_len)
Позволяют искать слова, даже если ввод начинается не с первой буквы. Полезно, например, при поиске по артикулам товаров. Оптимальные значения — 2 или 3 символа. Использовать нужно только в случае необходимости так как увеличивает размер индекса и замедляет индексацию.

Поиск по артикулам товаров
Если артикулы содержат точки, тире и другие спецсимволы, нужно настроить индексирование:
- добавьте эти символы в
blend_chars; - уберите их из
charset_table; - активируйте
blend_mode, указав правила обработки таких символов.
Пример: поиск по IP-адресам
По умолчанию IP 185.39.224.1 разбивается на отдельные слова 185 39 224 1.
Чтобы индексировался весь адрес, нужно добавить . в blend_chars и установить blend_mode=trim_both.
После этого поиск по IP работает корректно.

Изменение настроек таблицы
Изменение настроек таблицы требует её полного пересоздания. Это связано с тем, что изменение алгоритма индексации не обновляет уже существующие индексы. После изменения конфигурации необходимо повторно загрузить все данные.
Итоги
Manticore Search — мощный инструмент для полнотекстового поиска, который:
- легко интегрируется с MySQL,
- обеспечивает мгновенный поиск по большим и малым объёмам данных,
- гибко настраивается под нужды конкретного проекта.
Если вы часто сталкиваетесь с медленным поиском в MySQL — попробуйте Manticore. Начните с простых настроек, а затем постепенно усложняйте конфигурацию по мере роста задач.