Сравнение Meilisearch и поиска Manticore с использованием основных контрольных показателей

Сравнение Meilisearch и поиска Manticore с использованием основных контрольных показателей

3 мая 2023 г.

В постоянно меняющемся цифровом пространстве поисковые системы играют все более важную роль в расширении функций поиска на различных платформах. Среди популярных поисковых систем выделяются Meilisearch и Manticore Search. со своими уникальными предложениями.

Однако выбор правильной поисковой системы для вашего проекта требует глубокого понимания их производительности, вариантов использования и ограничений. Целью этой статьи является сравнение Meilisearch и Manticore Search с упором на их набор функций, прием данных и производительность поиска в трех реальных тестах: 10 миллионов журналов NGINX, 1,1 миллиона наборов данных Hacker News и 116 миллионов наборов данных Hacker News. все они доступны на странице Бенчмарки БД. Все сценарии тестирования производительности, конфигурации и наборы данных общедоступны и воспроизводимы.

Релевантность полнотекстового поиска

И Manticore, и Meilisearch позиционируют себя как системы полнотекстового поиска. Ключевым элементом полнотекстовых поисковых систем является то, как они ранжируют документы во время поиска.

Выбор правильного алгоритма ранжирования поиска имеет решающее значение для обеспечения того, чтобы пользователи могли находить нужную им информацию с точностью и запоминаемостью. В контексте релевантности полнотекстового поиска важно понимать, как работают эти алгоритмы и как они способствуют предоставлению точных и содержательных результатов поиска.

Manticore Search очень гибко контролирует ранжирование поиска и предоставляет десятки факторов ранжирования; однако по умолчанию он использует классический алгоритм BM25 и его производные. BM25 – это хорошо зарекомендовавший себя алгоритм поиска информации, который вычисляет релевантность документов на основе частоты терминов и обратной частотности документов

текущий запрос на вытягивание для эталонного теста BEIR (сравнительный анализ и оценка информационного поиска) демонстрирует стремление Manticore Search к поиску актуальность. BEIR — это оценочная структура, которая измеряет производительность информационно-поисковых систем при выполнении различных задач, таких как поиск документов и ответы на вопросы. Результаты теста BEIR можно найти здесь:

https://docs.google.com/spreadsheets/d/1_ZyYkPJ_K0st9FJBrjbZqX14nmCCPVlE_y3a_ y5KkYI/edit#gid=0< /а>.

Напротив, Meilisearch утверждает, что предлагает хорошую релевантность поиска, но нет общедоступных тестов, подтверждающих это утверждение. Согласно обсуждению на Hacker News, пользователи Meilisearch упомянули его релевантность для поиска, но без каких-либо эмпирических доказательств, что это трудно объективно сравнить его производительность с поиском Manticore.

В целом, использование Manticore Search проверенных алгоритмов ранжирования и участие в тесте BEIR подчеркивает его стремление предоставлять высокорелевантные результаты поиска, что делает его надежным выбором для различных приложений. Несмотря на то, что Meilisearch также может преуспеть в релевантности полнотекстового поиска, сложно сделать однозначное заявление, поскольку не существует общепринятых контрольных показателей, а используемый алгоритм малоизвестен.

Размер индекса и прием данных

Manticore Search демонстрирует способность эффективно обрабатывать большие наборы данных (например, 1,7 миллиарда поездок на такси с документами). test или просто Craigslist.org) за счет использования построчного и столбцового хранилищ. Столбчатый подход специально разработан для повышения производительности поиска и снижения потребления оперативной памяти для больших наборов данных. Напротив, построчное хранилище Manticore Search по умолчанию предлагает непревзойденную производительность для небольших и средних наборов данных. Эта гибкость делает поиск Manticore идеальным выбором для широкого круга приложений.

Meilisearch, с другой стороны, борется с большими наборами данных, так как мы не можем загрузить Hacker News большой набор данных в поисковую систему даже через 2 дня после загрузки. Кроме того, производительность Meilisearch снижается при загрузке документов. По мере роста набора данных время, необходимое для загрузки каждого последующего пакета документов, увеличивается. Эта проблема с производительностью указывает на то, что Meilisearch имеет проблемы с масштабируемостью данных и может быть проблематичным для приложений, требующих приема данных в режиме реального времени или индексации больших наборов данных. Meilisearch обрабатывает обновления документов в одной очереди, что со временем может привести к узким местам и снижению производительности.

Важно отметить, что обновления документов в Meilisearch не сразу отражаются в поисковых запросах. Это связано с тем, что Meilisearch использует асинхронную очередь задач для обработки обновлений, гарантируя, что производительность поиска останется стабильной даже во время интенсивных операций индексирования.

При обновлении документа изменение добавляется в очередь задач и обрабатывается ядром в фоновом режиме. После выполнения задачи обновленные данные становятся доступными в результатах поиска. Время обработки может варьироваться в зависимости от размера обновления и ресурсов сервера. Чтобы отслеживать статус задачи, вы можете использовать Tasks API, который предоставляет информацию о ходе выполнения и завершении задачи.< /p>

Manticore предлагает доступ в режиме реального времени

возможности вносить, заменять и удалять, что позволяет сразу же увидеть изменения, как только запрос будет выполнен.

Таким образом, несмотря на то, что Meilisearch предоставляет возможности быстрого и эффективного поиска, имейте в виду, что обновления документов могут не сразу отображаться в результатах поиска из-за асинхронной обработки задач.

Поисковая эффективность

Meilisearch известен своей впечатляющей скоростью, во многих случаях превосходит Elasticsearch. Однако его производительность наиболее заметна при работе с небольшими наборами данных. По мере увеличения размера набора данных производительность Meilisearch может снижаться.

Поиск Manticore постоянно обеспечивает высокую производительность запросов для различных типов запросов и типов наборов данных, превосходя как Meilisearch, так и Elasticsearch. Благодаря оптимизированным методам индексирования строк и столбцов Manticore обеспечивает быстрый поиск, что крайне важно для поддержания вовлеченности пользователей в высокопроизводительных приложениях.

В отличие от этого, Meilisearch борется с эффективной обработкой больших наборов данных и страдает от снижения производительности во время загрузки документов. Поэтому Manticore — лучший выбор для тех, кто не хочет беспокоиться о размере своего набора данных.

Эталонные тесты

Малый набор данных Hacker News (комментарии Hacker News)

Эталонный анализ небольшого набора данных Hacker News, включающий 1,1 миллиона тщательно отобранных комментариев Hacker News с числовыми полями (источник: https:// zenodo.org/record/45901/), подчеркивает более высокую производительность поиска Manticore Search по сравнению с Meilisearch. Набор данных содержит текстовые данные из комментариев и числовые поля, такие как голоса, временные метки и идентификаторы пользователей. Эталонный тест включает выполнение полнотекстовых и аналитических запросов для оценки возможностей поисковых систем.

Результаты тестов также можно проверить с помощью эта ссылка.

К сожалению, Meilisearch не может выполнять многие типы запросов, например запросы агрегации и запросы с отрицательными условиями полнотекстового поиска.

Интересным аспектом этого теста является значительная разница в использовании дискового пространства между двумя поисковыми системами:

[email protected] /perf/test_engines/tests/hn_small/manticore # du -sh idx
1.1G    idx


[email protected] /perf/test_engines/tests/hn_small/meilisearch # du -sh .
38G     .

Meilisearch требует в 34 раза больше места на диске для хранения того же набора данных по сравнению с поиском Manticore.

С точки зрения скорости загрузки данных потребовалось:

* Meilisearch 31 минута * Мантикора 65 секунд

чтобы полностью завершить загрузку данных.

Большой набор данных Hacker News (116 миллионов комментариев)

В этом тесте используется тот же набор данных из 1,1 миллиона тщательно отобранных комментариев Hacker News (источник: https://zenodo.org/record/45901/< /a>), но умноженный в 100 раз, в результате чего получается около 116 миллионов документов. . Эталонный тест охватывает как полнотекстовые, так и аналитические запросы, что делает его отличным тестовым примером для оценки возможностей поисковых систем в более широком масштабе.

Meilisearch не мог загрузить данные в течение 2 дней. Его производительность вставок ухудшалась по мере роста базы данных. Мы пытались его оптимизировать, но безуспешно, так как все пакеты, даже когда мы пытались сделать их параллельными, попадали в одну очередь. В результате мы не смогли улучшить загрузку данных для Meilisearch. Meilisearch потребовалось около 2 дней, чтобы загрузить только 38% данных, которые уже заняли более 850 ГБ дискового пространства. Это резко контрастирует с поиском Manticore, который хранил весь набор данных, используя примерно 100 ГБ дискового пространства, а загрузка занимала 2 часа 9 минут с использованием одного ядра ЦП (которое масштабируется практически линейно).

Неспособность Meilisearch обработать весь большой набор данных Hacker News подчеркивает его проблемы с управлением и масштабированием с использованием более обширных коллекций данных. Превосходная производительность Manticore Search в этом тесте подчеркивает его способность справляться с крупномасштабными требованиями к поиску, что делает его более подходящим выбором для приложений с большими коллекциями данных.

Поскольку мы не смогли загрузить данные в Meilisearch, вы можете проверить результаты только для Manticore здесь.

10 миллионов журналов NGINX

Этот тест основан на наборе данных, содержащем 10 миллионов журналов NGINX. Источником этого набора данных является Kaggle. Журналы веб-сервера регистрируют различные события, предоставляя ценную информацию о посетителях веб-сайта, поведении пользователей, поисковых роботах, обращающихся к сайту, бизнес-аналитике, проблемах безопасности и многом другом. В тесте используется тщательно подобранный список типичных запросов, которые может выполнить случайный инженер DevOps.

Manticore Search и Meilisearch продемонстрировали значительную разницу в использовании дискового пространства для набора данных. Поиск Manticore использовал 4,4 ГБ дискового пространства, в то время как Meilisearch потреблял 69 ГБ, что примерно в 15 раз больше, чем Manticore. Хотя разница менее существенна, чем в тесте небольшого набора данных Hacker News, она все же заслуживает внимания, особенно если учесть, что набор данных Logs10m содержит меньше текстовых данных.

Meilisearch потребовалось около 20 минут, чтобы заполнить данные, в то время как Manticore завершила работу за 6 минут.

Вы можете найти подробное сравнение результатов производительности, используя предоставил ссылку. Обратите внимание, что многие пустые результаты просто вызваны тем, что Meiliesarch не может обрабатывать определенные типы запросов. В результате эти запросы были пропущены в процессе сравнительного анализа.

Сравнение возможностей Manticore Search и Meilisearch

  • Полнотекстовое сопоставление
  • ✅ Manticore: более 20 полнотекстовых операторов. Фильтрующий поиск (поиск в обратном порядке).
  • ❌ Meilisearch: очень просто: И и поиск по фразе. Нет сквозного поиска.
  • Релевантность поиска
  • ✅ Manticore использует проверенные классические алгоритмы ранжирования (BM25, BM15). Актуальность подтверждена тестами. 7 встроенных ранжировщиков и настраиваемый ранжировщик с более 20 факторов ранжирования .
  • ❌ Meilisearch утверждает, что имеет хорошую релевантность для поиска, но не имеет общедоступных контрольных показателей для проверки. 6 правил ранжирования.
  • Хранилище
  • ✅ Manticore: собственное построчное хранилище для небольших и средних наборов данных, собственное столбчатое хранилище с меньшими требованиями к оперативной памяти, подходящее для больших наборов данных.
  • ❌ Meilisearch: LMDB со всеми его преимуществами, недостатками и последствиями: например, требование 205 ГБ виртуальной памяти для 9,1 МБ набор данных кажется странным.
  • Размер индекса и загрузка данных
  • ✅ Manticore поддерживает большие наборы данных с методами столбцовой и построчной индексации. Легко синхронизируйте данные из MySQL, PostgreSQL, MS SQL и любой другой базы данных, поддерживающей ODBC, XML и CSV. Настоящие транзакционные вставки, замены и удаления в реальном времени. Бинарный журнал. Обновления значений атрибутов на месте.
  • ❌ Meilisearch испытывает трудности с большими наборами данных и снижает производительность при загрузке документов. Вы можете загрузить CSV и JSON. Только асинхронное добавление документов. Нет обновлений на месте.
  • Схема
  • ✅ Мантикора: Автосхема. Авто-идентификация. По умолчанию все атрибуты можно фильтровать, сортировать и группировать.
  • ❌ Meilisearch: автосхема. ID можно взять автоматически из документа. Все поля по умолчанию доступны для полнотекстового поиска, но атрибуты нельзя фильтровать или сортировать. Вы должны определиться со схемой перед загрузкой данных в индекс, чтобы избежать полной переиндексации.
  • Поисковая эффективность
  • ✅ Manticore превосходит Meilisearch по эффективности поиска.
  • ❌ Meilisearch менее подходит для приложений, требующих быстрого и масштабируемого поиска.
  • Высокая доступность
  • ✅ Manticore: репликация, распределенные таблицы с поддержкой удаленных агентов с зеркалированием и несколько стратегий высокой доступности.
  • ❌ Meilisearch: без репликации, без распределенного поиска, без зеркалирования.
  • Толерантность к опечаткам
  • ✅ Meilisearch упрощает работу с опечатками.
  • ❌ Manticore допускает опечатки, но требует больших усилий в приложении.
  • Предварительный просмотр поиска
  • ✅ Meilisearch предлагает полезный предварительный просмотр поиска — встроенный пользовательский интерфейс для поиска данных в экземпляре.
  • ❌ В Manticore нет этой функции.
  • Токенизация
  • ✅ Manticore: очень гибкая токенизация: символы токенов, смешанные символы, игнорируемые символы, правила токенизации регулярных выражений и т. д., словоформы, стоп-слова, синонимы, возможность создавать плагины токенизации, морфология для различных языков на основе парадигматических модулей и лемматизаторов.< /li>
  • ❌ Meilisearch: токенизатор зависит от языка: сегментатор Unicode для большинства языков, специальные токенизаторы для китайского, японского, иврита и тайского. Синонимы. Стоп-слова.
  • Аутентификация
  • ✅ Meilisearch: встроенная аутентификация.
  • ❌ Manticore: нет встроенной аутентификации.
  • Интерфейсы
  • ✅ Manticore: сначала SQL, вы можете подключиться с помощью клиента 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

  1. Платформы электронной коммерции. Manticore Search может эффективно управлять большими каталогами продуктов, предоставляя клиентам релевантные результаты поиска с помощью расширенные функциональные возможности. Это повышает коэффициент конверсии и повышает удобство покупок в целом, что делает эту функцию очень востребованной на платформах электронной коммерции.
  2. Веб-сайты с богатым содержанием. Manticore Search может индексировать и выполнять поиск в обширных библиотеках содержимого, таких как новостные сайты, блоги или базы знаний. Благодаря надлежащему полнотекстовому ранжированию пользователи могут быстро и эффективно находить нужную им информацию, что способствует более активному взаимодействию с ними.
  3. Корпоративные приложения. Масштабируемость Manticore Search и расширенные возможности поиска делают его идеальным для крупномасштабных корпоративных приложений, включая системы управления взаимоотношениями с клиентами (CRM), системы управления документами и порталы интрасети, где требуются точные и эффективная функциональность поиска имеет решающее значение.
  4. Поиск в журналах. Поиск Manticore отлично подходит для поиска в журналах, поскольку он может эффективно обрабатывать и выполнять поиск в огромных журналах. Его скорость и производительность делают его отличным выбором для анализа и мониторинга журналов.

Примеры использования Meilisearch

Заключение

При выборе поисковой системы для своего проекта крайне важно учитывать такие факторы, как релевантность поиска, масштабируемость и производительность. Manticore Search выделяется как превосходный выбор для различных приложений и вариантов использования, обеспечивая оптимальную производительность поиска и релевантность независимо от размера набора данных. Его расширенные возможности поиска и аналитики делают его надежным выбором для проектов, которым требуются высокопроизводительные функции поиска.

Meilisearch подходит для небольших проектов, где расширенные функции поиска и масштабируемость не являются критическими факторами.

В конечном итоге выбор между Manticore Search и Meilisearch будет зависеть от ваших конкретных потребностей и требований проекта.

Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE