Введение
В постоянно развивающемся цифровом ландшафте поисковые системы играют все более важную роль в обеспечении функциональности поиска на различных платформах. Среди популярных поисковых систем Meilisearch и Manticore Search выделяются своими уникальными предложениями. Однако выбор правильной поисковой системы для вашего проекта требует тщательного понимания их производительности, случаев использования и ограничений. Эта статья направлена на предоставление сравнения Meilisearch и Manticore Search, с акцентом на их функциональные возможности, а также производительность загрузки данных и поиска в трех реальных тестах: 10 миллионов логов NGINX, набор данных Hacker News на 1,1 миллиона документов и набор данных Hacker News на 116 миллионов документов, все доступные на DB Benchmarks . Все скрипты тестирования производительности, конфигурации и коллекции данных доступны публично и воспроизводимы.
Релевантность полнотекстового поиска
Как Manticore, так и Meilisearch позиционируют себя как полнотекстовые поисковые системы. Ключевым элементом в полнотекстовых поисковых системах является то, как они ранжируют документы во время поиска.
Выбор правильного алгоритма ранжирования поиска имеет решающее значение для обеспечения того, чтобы пользователи могли находить необходимую информацию с точностью и полнотой. В контексте релевантности полнотекстового поиска важно понимать, как работают эти алгоритмы и как они способствуют предоставлению точных и значимых результатов поиска.
Manticore Search очень гибок в контроле ранжирования поиска и предоставляет десятки факторов ранжирования; однако по умолчанию он использует классический алгоритм BM25 и его производные. BM25 — это хорошо зарекомендовавший себя алгоритм информационного поиска, который вычисляет релевантность документов на основе частоты термина и обратной частоты документа.
Текущий запрос на слияние для бенчмарка BEIR (Benchmarking and Evaluation of Information Retrieval) демонстрирует приверженность Manticore Search к релевантности поиска. BEIR — это оценочная структура, которая измеряет производительность систем информационного поиска по различным задачам, таким как извлечение документов и вопросно-ответные системы. Результаты бенчмарка BEIR можно найти здесь: https://docs.google.com/spreadsheets/d/1_ZyYkPJ_K0st9FJBrjbZqX14nmCCPVlE_y3a_y5KkYI/edit#gid=0 .
В отличие от этого, Meilisearch утверждает, что предлагает хорошую релевантность поиска, но нет публичных бенчмарков, чтобы подтвердить это утверждение. Согласно обсуждению на Hacker News , пользователи Meilisearch упоминали о его релевантности поиска, но без каких-либо эмпирических доказательств трудно объективно сравнить его производительность с Manticore Search.
В целом, использование Manticore Search проверенных алгоритмов ранжирования и участие в бенчмарке BEIR подчеркивает его приверженность к предоставлению высокорелевантных результатов поиска, что делает его надежным выбором для различных приложений. Хотя Meilisearch также может превосходить в релевантности полнотекстового поиска, трудно сделать окончательное заявление, поскольку нет установленных бенчмарков, и используемый алгоритм не широко известен.
Размер индекса и загрузка данных
Manticore Search демонстрирует свою способность эффективно обрабатывать большие наборы данных (например, тест такси на 1,7 миллиарда документов или просто Craigslist.org ) с помощью построчного и колонного хранения. Колонный подход специально разработан для ускорения производительности поиска и снижения потребления ОЗУ на больших наборах данных. В отличие от этого, построчное хранение по умолчанию в Manticore Search предлагает непревзойденную производительность на малых и средних наборах данных. Эта гибкость делает Manticore Search идеальным выбором для широкого спектра приложений.
Meilisearch, с другой стороны, испытывает трудности с большими наборами данных, так как мы не смогли загрузить большой набор данных Hacker News в поисковую систему даже после 2 дней загрузки. Более того, Meilisearch испытывает ухудшение производительности при загрузке документов. По мере роста набора данных время, необходимое для загрузки каждой последующей партии документов, увеличивается. Эта проблема с производительностью указывает на то, что у Meilisearch есть проблемы со масштабируемостью данных и это может быть проблемой для приложений, которые требуют реальной загрузки данных или индексации больших наборов данных. Meilisearch обрабатывает обновления документов в одной очереди, что может привести к узким местам и снижению производительности со временем.
Важно отметить, что обновления документов в Meilisearch не мгновенно отражаются в поисковых запросах. Это связано с тем, что Meilisearch использует асинхронную очередь задач для обработки обновлений, обеспечивая стабильную производительность поиска даже во время интенсивных операций индексации.
При обновлении документа изменение добавляется в очередь задач и обрабатывается движком в фоновом режиме. Как только задача завершена, обновленные данные становятся доступными в результатах поиска. Время обработки может варьироваться в зависимости от размера обновления и ресурсов сервера. Для мониторинга статуса задач вы можете использовать Tasks API , который предлагает информацию о ходе выполнения задач и их завершении.
Manticore предлагает возможности реального времени для вставки, замены и удаления, позволяя изменениям быть немедленно видимыми, как только запрос завершен.
В заключение, хотя Meilisearch предоставляет быстрые и эффективные возможности поиска, имейте в виду, что обновления документов могут не быть немедленно видимыми в результатах поиска из-за асинхронной обработки задач.
Поиск производительности
Meilisearch известен своей впечатляющей скоростью, опережая Elasticsearch во многих случаях . Однако его производительность наиболее заметна при работе с небольшими наборами данных. По мере увеличения размера набора данных производительность Meilisearch может снижаться.
Manticore Search постоянно обеспечивает быструю производительность запросов для различных типов запросов и типов наборов данных, опережая как Meilisearch, так и Elasticsearch . С оптимизированными методами индексирования по строкам и столбцам Manticore обеспечивает отзывчивый опыт поиска, что имеет решающее значение для поддержания вовлеченности пользователей в высокопроизводительных приложениях.
В отличие от этого, Meilisearch испытывает трудности с эффективной обработкой больших наборов данных и страдает от ухудшения производительности во время загрузки документов. Поэтому Manticore является лучшим выбором для тех, кто не хочет беспокоиться о размере своего набора данных.
Бенчмарковые тесты
Небольшой набор данных Hacker News (Комментарии Hacker News)
Бенчмарк небольшого набора данных Hacker News, который включает в себя коллекцию из 1,1 миллиона курируемых комментариев Hacker News с числовыми полями (источник: https://zenodo.org/record/45901/ ), подчеркивает более высокую производительность поиска Manticore Search по сравнению с Meilisearch. Набор данных содержит текстовые данные из комментариев и числовые поля, такие как голоса, временные метки и идентификаторы пользователей. Бенчмарковый тест включает в себя выполнение полнотекстовых и аналитических запросов для оценки возможностей поисковых систем.

Результаты бенчмарка также можно проверить по этой ссылке .
К сожалению, Meilisearch не способен выполнять многие типы запросов, такие как агрегирующие запросы и запросы с отрицательными терминами полнотекстового поиска.
Интересный аспект этого бенчмарка — это значительная разница в использовании дискового пространства между двумя поисковыми системами:
root@perf3 /perf/test_engines/tests/hn_small/manticore # du -sh idx
1.1G idx
root@perf3 /perf/test_engines/tests/hn_small/meilisearch # du -sh .
38G .
Meilisearch требует 34x больше дискового пространства для хранения того же набора данных по сравнению с Manticore Search.
Что касается производительности загрузки данных, то это заняло:
- Meilisearch 31 минуту
- Manticore 65 секунд
для полной загрузки данных.
Большой набор данных Hacker News (116 миллионов комментариев)
Этот тест включает в себя тот же набор данных из 1,1 миллиона курируемых комментариев Hacker News (источник: https://zenodo.org/record/45901/ ), но умноженный на 100, что приводит к примерно 116 миллионам документов . Бенчмарк охватывает как полнотекстовые, так и аналитические запросы, что делает его отличным тестовым случаем для оценки возможностей поисковых систем в более крупном масштабе.
Meilisearch не смог загрузить данные за 2 дня. Его производительность вставок ухудшалась по мере роста базы данных. Мы пытались оптимизировать это, но не смогли, так как все партии, даже когда мы пытались сделать их параллельными, попадали в одну очередь. В результате мы не смогли добиться улучшения загрузки данных для Meilisearch. Meilisearch потребовалось около 2 дней, чтобы загрузить только 38% данных, что уже заняло более 850 ГБ дискового пространства. Это резкий контраст с Manticore Search, который хранил весь набор данных, используя примерно 100 ГБ дискового пространства, и занял 2 часа 9 минут для загрузки с использованием одного ядра ЦП (что практически линейно масштабируемо).
Неспособность Meilisearch обработать весь большой набор данных Hacker News подчеркивает его проблемы с управлением и масштабированием с более обширными коллекциями данных. Превосходная производительность Manticore Search в этом бенчмарке подчеркивает его способность справляться с требованиями поиска в крупном масштабе, что делает его более подходящим выбором для приложений с большими коллекциями данных.
Поскольку мы не смогли загрузить данные в Meilisearch, вы можете проверить результаты только для Manticore здесь .
10 миллионов логов NGINX
Этот тест основан на наборе данных, содержащем 10 миллионов логов NGINX. Источник этого набора данных — Kaggle . Логи веб-сервера регистрируют различные события, предоставляя ценную информацию о посетителях сайта, поведении пользователей, краулерах, обращающихся к сайту, бизнес-аналитике, проблемах безопасности и многом другом. Бенчмарк использует курируемый список типичных запросов, которые может выполнить случайный инженер DevOps.
Manticore Search и Meilisearch продемонстрировали значительную разницу в использовании дискового пространства для набора данных. Manticore Search использовал 4,4 ГБ дискового пространства, в то время как Meilisearch потребил 69 ГБ, что примерно в 15 раз больше, чем Manticore. Хотя разница менее драматична, чем в тесте небольшого набора данных Hacker News, она все же заслуживает внимания, особенно учитывая, что набор данных Logs10m содержит меньше текстовых данных.
Meilisearch потребовалось около 20 минут, чтобы заполнить данные, в то время как Manticore завершил за 6 минут.
Вы можете найти подробное сравнение результатов производительности, используя предоставленную ссылку . Обратите внимание, что многие пустые результаты просто связаны с тем, что Meilisarch не смог обработать определенные типы запросов. В результате эти запросы были пропущены в процессе бенчмаркинга.

Сравнение функций Manticore Search и Meilisearch
- Полнотекстовое соответствие
- ✅ Manticore: более 20 операторов полнотекстового поиска. Обратный поиск (поиск в обратном порядке).
- ❌ Meilisearch: очень просто: поиск по AND и фразам. Нет перколяционного поиска.
- Релевантность поиска
- ✅ Manticore использует проверенные классические алгоритмы ранжирования (BM25, BM15). Релевантность подтверждена бенчмарками. 7 встроенных ранжировщиков и пользовательский ранжировщик с 20+ факторами ранжирования .
- ❌ Meilisearch утверждает, что имеет хорошую релевантность поиска, но не предоставляет публичных бенчмарков для валидации. 6 правил ранжирования .
- Хранение данных
- ✅ Manticore: собственное построчное хранилище для малых/средних наборов данных, собственное колонковое хранилище с меньшими требованиями к ОЗУ, подходящее для больших наборов данных.
- ❌ Meilisearch: LMDB со всеми его преимуществами, недостатками и последствиями: например, требование виртуальной памяти 205 ГБ для набора данных размером 9,1 МБ кажется странным.
- Размер индекса и загрузка данных
- ✅ Manticore поддерживает большие наборы данных с колонковыми и построчными методами индексации. Легко синхронизируйте данные из MySQL, PostgreSQL, MS SQL и любой другой базы данных, поддерживающей ODBC, XML и CSV. Истинные транзакционные вставки, замены и удаления в реальном времени. Двоичный журнал. Обновления значений атрибутов на месте.
- ❌ Meilisearch испытывает трудности с большими наборами данных и сталкивается с ухудшением производительности во время загрузки документов. Вы можете загружать CSV и JSON. Только асинхронное добавление документов. Нет обновлений на месте.
- Схема
- ✅ Manticore: Авто-схема. Авто-ID. Все атрибуты по умолчанию фильтруемы, сортируемы и группируемы.
- ❌ Meilisearch: Авто-схема. ID может быть автоматически выбран из документа. Все поля по умолчанию доступны для полнотекстового поиска, но атрибуты не фильтруемы и не сортируемы. Вы должны решить о схеме перед загрузкой данных в индекс, чтобы избежать полной переиндексации.
- Производительность поиска
- ✅ Manticore превосходит Meilisearch по производительности поиска.
- ❌ Meilisearch менее подходит для приложений, требующих быстрой и масштабируемой функциональности поиска.
- Высокая доступность
- ✅ Manticore: репликация, распределенные таблицы, поддерживающие удаленные агенты с зеркалированием, и несколько стратегий высокой доступности.
- ❌ Meilisearch: нет репликации, нет распределенного поиска, нет зеркалирования.
- Толерантность к опечаткам
- ✅ Meilisearch предлагает более легкую толерантность к опечаткам.
- ❌ Manticore может обрабатывать толерантность к опечаткам, но требует больших усилий в приложении.
- Предварительный просмотр поиска
- ✅ Meilisearch имеет полезный предварительный просмотр поиска - встроенный интерфейс для поиска по данным в экземпляре.
- ❌ Manticore не имеет этой функции.
- Токенизация
- ✅ Manticore: высоко гибкая токенизация: символы токенов, смешанные символы, игнорируемые символы, правила токенизации с использованием регулярных выражений и т.д., формы слов, стоп-слова, синонимы, возможность создания плагинов токенизации, морфология для различных языков на основе стеммеров и лемматизаторов.
- ❌ Meilisearch: токенизатор зависит от языка: сегментатор Unicode для большинства языков, специфические токенизаторы для китайского, японского, иврита и тайского. Синонимы. Стоп-слова.
- Аутентификация
- ✅ Meilisearch: встроенная аутентификация.
- ❌ Manticore: нет встроенной аутентификации.
- Интерфейсы
- ✅ Manticore: SQL-first, вы можете подключиться с помощью клиента MySQL. HTTP JSON интерфейс. Двоичный интерфейс для крайне низкого времени отклика. Клиенты для: PHP, Python, JavaScript, Java, C#, Elixir, Golang.
- ❌ Meilisearch: HTTP JSON интерфейс. Клиенты для: JavaScript, Python, PHP, Java, Ruby, Golang, C#, Rust, Swift, Dart.
- Сценарии использования
- ✅ Manticore: поиск по логам, платформы электронной коммерции, контентные веб-сайты, корпоративные приложения.
- ❌ Meilisearch: проекты небольшого масштаба с ограниченными данными и требованиями к поиску.
Сценарии использования
Сценарии использования для Manticore Search
- Платформы электронной коммерции: Manticore Search может эффективно управлять большими каталогами продуктов, предоставляя релевантные результаты поиска для клиентов с его расширенной функциональностью фасетного поиска . Это улучшает коэффициенты конверсии и повышает общий опыт покупок, что делает его высоко востребованной функцией для платформ электронной коммерции.
- Контентные веб-сайты: Manticore Search может индексировать и искать по обширным библиотекам контента, таким как новостные сайты, блоги или базы знаний. С правильным полнотекстовым ранжированием он обеспечивает быстрое и эффективное нахождение пользователями необходимой информации, что способствует повышению вовлеченности пользователей.
- Корпоративные приложения: Масштабируемость и продвинутые возможности поиска Manticore Search делают его идеальным для крупных корпоративных приложений, включая системы управления взаимоотношениями с клиентами (CRM), системы управления документами и порталы интранета, где точная и эффективная функциональность поиска имеет критическое значение.
- Поиск по логам: Manticore Search отлично подходит для поиска в логах, так как он может эффективно обрабатывать и искать по огромным логам. Его скорость и производительность делают его отличным выбором для анализа и мониторинга логов.
Сценарии использования для Meilisearch
Проекты небольшого масштаба: легкая природа Meilisearch и простота развертывания делают его подходящим для небольших проектов с ограниченными данными и требованиями к поиску, таких как небольшая электронная коммерция, личные веб-сайты, местные каталоги или простые веб-приложения, где быстрая загрузка данных, продвинутые функции поиска и масштабируемость не являются критическими факторами.
Заключение
При выборе поискового движка для вашего проекта важно учитывать такие факторы, как релевантность поиска, масштабируемость и производительность. Manticore Search выделяется как лучший выбор для различных приложений и сценариев использования, обеспечивая оптимальную производительность поиска и релевантность независимо от размера набора данных. Его продвинутые возможности поиска и аналитики делают его надежным выбором для проектов, требующих высокопроизводительной функциональности поиска.
Meilisearch подходит для небольших проектов, где продвинутые функции поиска и масштабируемость не являются критическими факторами.
В конечном итоге выбор между Manticore Search и Meilisearch будет зависеть от ваших конкретных потребностей и требований проекта.
