Зміст

    Пошук по сайту за допомогою Manticore Search

    02.06.2025

     Упевнений, ви бачили, наскільки швидко на деяких сайтах працює пошук за його вмістом — починаєш вводити слово, і він одразу ж пропонує варіанти, виправляє помилки і миттєво знаходить потрібний текст. На жаль, домогтися такої швидкості засобами звичайних баз даних — неможливо, оскільки їм для пошуку частини слова необхідно буде прочитати з диска всю таблицю з даними в пам'яті й у пам'яті знайти потрібний текст, обробивши всі дані. Для вирішення цієї проблеми використовуються бази даних, які спеціально призначені для швидкого пошуку потрібного слова. На відміну від звичайних баз даних, у яких довжина тексту, що індексується, обмежена і не завжди працює досить швидко, у повнотекстовий індекс потрапляють не цілі слова, а і їхні частини. Це дає змогу миттєво знаходити документи з необхідною частиною слова;  

    Крім повнотекствого пошуку в Manticore Search реалізовано механізми морфологічного перетворення слів, що дають змогу оптимізувати індекс, скорочуючи кількість збережених в індексі словоформ завдяки зберіганню тільки кореня слова;  

    Швидко і легко розібратися в роботі Manticore Search можна завдяки інтерфейсу, який дає змогу створювати та змінювати таблиці, налаштовувати індекси, дивитися статистику та керувати сервісом Manticore;  

    Інтерфейс управління ManticoreSearch
    Інтерфейс управління ManticoreSearch

    Тепер основним і єдиним режимом роботи Manticore у нас на серверах буде RealTime, який на відміну від Plain режиму, дає змогу створювати таблиці на льоту, а не перезапускати сервіс після внесення найменшої зміни.

    Для спрощення управління базою даних створено форми, які легко дають змогу додавати таблиці та налаштовувати індекси. Таблиці створюються у форматі RealTime і підтримують вставку та зміну даних;  

    Додавання та оновлення даних

    Замість використання команди UPDATE рекомендується використовувати REPLACE INTO, оскільки якщо оновити командою UPDATE повнотекстове поле, то індекс для нього не оновиться. Тому використання UPDATE виправдане тільки для внесення змін у поля, які не використовуються для повнотекстового пошуку.

    Зміна структури таблиць

    Якщо змінити налаштування таблиці, наприклад морфологію, довжину інфіксів і суфіксів ... то зміни застосовуватимуться тільки для нових даних. Індекс для тих записів, які існували в таблиці на момент змін, залишаться недоторканими. З цієї причини ми не даємо можливості внести зміни в наявні таблиці, оскільки це призводить не до тих змін, які очікує користувач. Але є можливість в інтерфейсі створити копію структури таблиці зі зміненими налаштуваннями.

    Плани на майбутнє

    У майбутньому плануємо дати можливість вносити зміни в порожні таблиці, а також можливість змінювати таблиці, в яких немає стовпців, що містять тільки індекс.

    Створити свій індексатор документів, який буде додавати дані в RealTime таблиці, вивантажуючи їх з баз даних клієнтів. Індексатор, який йде в комплекті з ManticoreSearch, на жаль, працює тільки в plain режимі;