Миттєвий пошук по сайту
Коли на сайті потрібно реалізувати пошук за назвами товарів, стандартний 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. Почніть з простих налаштувань, а потім поступово ускладнюйте конфігурацію в міру зростання завдань.