paint-brush
Comparaison de Meilisearch et de Manticore Search à l'aide de repères cléspar@snikolaev
4,274 lectures
4,274 lectures

Comparaison de Meilisearch et de Manticore Search à l'aide de repères clés

par Sergey Nikolaev10m2023/05/02
Read on Terminal Reader

Trop long; Pour lire

Les moteurs de recherche jouent un rôle de plus en plus crucial dans l'alimentation des fonctionnalités de recherche sur diverses plates-formes. Choisir le bon moteur de recherche pour votre projet nécessite une compréhension approfondie de ses performances, de ses cas d'utilisation et de ses limites. Cet article vise à fournir une comparaison entre Meilisearch et Manticore Search, en se concentrant sur leur ensemble de fonctionnalités et l'ingestion de données.
featured image - Comparaison de Meilisearch et de Manticore Search à l'aide de repères clés
Sergey Nikolaev HackerNoon profile picture
0-item
1-item

Dans le paysage numérique en constante évolution, les moteurs de recherche jouent un rôle de plus en plus crucial dans l'alimentation des fonctionnalités de recherche sur diverses plateformes. Parmi les moteurs de recherche populaires, Meilisearch et Manticore Search se distinguent par leurs offres uniques.


Cependant, choisir le bon moteur de recherche pour votre projet nécessite une compréhension approfondie de ses performances, de ses cas d'utilisation et de ses limites. Cet article vise à fournir une comparaison de Meilisearch et de Manticore Search, en se concentrant sur leur ensemble de fonctionnalités et leurs performances d'ingestion et de recherche de données dans trois benchmarks du monde réel : 10 millions de journaux NGINX, Hacker News 1,1 million de données docs et Hacker News 116 millions de données docs. tous disponibles sur DB Benchmarks . Tous les scripts de test de performance, les configurations et les collections de données sont accessibles au public et reproductibles.

Pertinence de la recherche en texte intégral

Manticore et Meilisearch se positionnent tous deux comme des moteurs de recherche en texte intégral. L'élément clé des moteurs de recherche en texte intégral est la façon dont ils classent les documents lors d'une recherche.


Le choix du bon algorithme de classement de recherche est crucial pour s'assurer que les utilisateurs peuvent trouver les informations dont ils ont besoin avec précision et rappel. Dans le contexte de la pertinence de la recherche en texte intégral, il est essentiel de comprendre comment ces algorithmes fonctionnent et comment ils contribuent à fournir des résultats de recherche précis et significatifs.


Manticore Search est très flexible dans le contrôle du classement de recherche et expose des dizaines de facteurs de classement ; cependant, par défaut, il utilise l'algorithme classique BM25 et ses dérivés. BM25 est un algorithme de recherche d'informations bien établi qui calcule la pertinence des documents en fonction de la fréquence des termes et de la fréquence inverse des documents.


Une demande d'extraction en cours pour le benchmark BEIR (Benchmarking and Evaluation of Information Retrieval) démontre l'engagement de Manticore Search envers la pertinence de la recherche. Le BEIR est un cadre d'évaluation qui mesure la performance des systèmes de recherche d'informations sur diverses tâches, telles que la recherche de documents et la réponse aux questions. Les résultats du benchmark BEIR sont disponibles ici :


https://docs.google.com/spreadsheets/d/1_ZyYkPJ_K0st9FJBrjbZqX14nmCCPVlE_y3a_y5KkYI/edit#gid=0 .


En revanche, Meilisearch prétend offrir une bonne pertinence de recherche, mais il n'existe pas de références publiques disponibles pour étayer cette affirmation. Selon une discussion sur Hacker News , les utilisateurs de Meilisearch ont mentionné sa pertinence de recherche, mais sans aucune preuve empirique, il est difficile de comparer objectivement ses performances à Manticore Search.


Dans l'ensemble, l'utilisation par Manticore Search d'algorithmes de classement éprouvés et sa participation au benchmark BEIR soulignent son engagement à fournir des résultats de recherche hautement pertinents, ce qui en fait un choix fiable pour diverses applications. Bien que Meilisearch puisse également exceller dans la pertinence de la recherche en texte intégral, il est difficile de faire une déclaration définitive car il n'y a pas de références établies et l'algorithme utilisé n'est pas largement connu.

Taille d'index et ingestion de données

Manticore Search démontre sa capacité à gérer efficacement de grands ensembles de données (par exemple , 1,7 milliard de docs test de courses en taxi ou simplement Craigslist.org ) grâce à l'utilisation de stockages en lignes et en colonnes. L'approche en colonnes est spécialement conçue pour accélérer les performances de recherche et réduire la consommation de RAM sur de grands ensembles de données. En revanche, le stockage par ligne par défaut de Manticore Search offre des performances imbattables sur les petits et moyens ensembles de données. Cette flexibilité fait de Manticore Search un choix idéal pour une large gamme d'applications.


Meilisearch, d'autre part, a du mal avec des ensembles de données plus volumineux, car nous ne pouvions pas charger l' ensemble de données plus volumineux de Hacker News dans le moteur de recherche, même après 2 jours de chargement. De plus, Meilisearch subit une dégradation des performances lors du chargement des documents. Au fur et à mesure que l'ensemble de données s'agrandit, le temps nécessaire pour charger chaque lot de documents ultérieur augmente. Ce problème de performances indique que Meilisearch a un problème avec l'évolutivité des données et pourrait être problématique pour les applications qui nécessitent l'ingestion de données en temps réel ou l'indexation de grands ensembles de données. Meilisearch traite les mises à jour de documents dans une seule file d'attente, ce qui peut entraîner des goulots d'étranglement et une réduction des performances au fil du temps.


Il est crucial de noter que les mises à jour de documents dans Meilisearch ne sont pas instantanément reflétées dans les requêtes de recherche. En effet, Meilisearch utilise une file d'attente de tâches asynchrone pour gérer les mises à jour, garantissant ainsi que les performances de recherche restent stables même pendant les opérations d'indexation intensives.

Lors de la mise à jour d'un document, la modification est ajoutée à la file d'attente des tâches et traitée par le moteur en arrière-plan. Une fois la tâche terminée, les données mises à jour deviennent disponibles dans les résultats de la recherche. Le temps de traitement peut varier en fonction de la taille de la mise à jour et des ressources du serveur. Pour surveiller l'état des tâches, vous pouvez utiliser l' API Tasks , qui fournit des informations sur la progression et l'achèvement des tâches.


Manticore offre une inse en temps réel

rt, remplacer et supprimer les fonctionnalités, permettant aux modifications d'être immédiatement visibles dès que la requête est terminée.


En résumé, bien que Meilisearch offre des capacités de recherche rapides et efficaces, gardez à l'esprit que les mises à jour des documents peuvent ne pas être immédiatement visibles dans les résultats de recherche en raison du traitement asynchrone des tâches.

Performances de recherche

Meilisearch est connu pour sa vitesse impressionnante, surpassant Elasticsearch dans de nombreux cas . Cependant, ses performances sont plus visibles lorsque vous travaillez avec de petits ensembles de données. À mesure que la taille de l'ensemble de données augmente, les performances de Meilisearch peuvent diminuer.


Manticore Search offre constamment des performances de requête rapides pour divers types de requêtes et types d'ensembles de données, surpassant à la fois Meilisearch et Elasticsearch . Avec des méthodes d'indexation optimisées par lignes et par colonnes, Manticore garantit une expérience de recherche réactive, essentielle pour maintenir l'engagement des utilisateurs dans les applications hautes performances.


En revanche, Meilisearch a du mal à gérer efficacement de grands ensembles de données et souffre d'une dégradation des performances lors du chargement des documents. Par conséquent, Manticore est le meilleur choix pour ceux qui ne veulent pas se soucier de la taille de leur ensemble de données.

Tests de référence

Hacker News Petit ensemble de données (Commentaires de Hacker News)

Le petit ensemble de données de référence de Hacker News, qui comprend une collection de 1,1 million de commentaires de Hacker News avec des champs numériques (source : https://zenodo.org/record/45901/ ), met en évidence les performances de recherche supérieures de Manticore Search par rapport à Meilisearch. L'ensemble de données contient des données textuelles provenant de commentaires et de champs numériques tels que les votes positifs, les horodatages et les ID utilisateur. Le test de référence consiste à exécuter des requêtes en texte intégral et analytiques pour évaluer les capacités des moteurs de recherche.



Les résultats du benchmark peuvent également être vérifiés via ce lien .


Malheureusement, Meilisearch n'est pas capable d'exécuter de nombreux types de requêtes, telles que les requêtes d'agrégation et celles avec des termes de recherche en texte intégral négatifs.


Un aspect intéressant de ce benchmark est la différence significative d'utilisation de l'espace disque entre les deux moteurs de recherche :


 [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 nécessite 34 fois plus d'espace disque pour stocker le même ensemble de données par rapport à Manticore Search.

En termes de performances de chargement des données, il a fallu :


  • Meilisearch 31 minutes
  • Manticore 65 secondes


pour terminer le chargement des données.

Hacker News Large Dataset (116 millions de commentaires)

Ce test implique le même ensemble de données de 1,1 million de commentaires de Hacker News organisé (source : https://zenodo.org/record/45901/ ), mais multiplié par 100, ce qui donne environ 116 millions de documents . Le benchmark couvre à la fois les requêtes en texte intégral et les requêtes analytiques, ce qui en fait un excellent cas de test pour évaluer les capacités des moteurs de recherche à plus grande échelle.


Meilisearch n'a pas pu charger les données en 2 jours. Ses performances d'insertions se sont dégradées à mesure que la base de données augmentait. Nous avons essayé de l'optimiser mais sans succès car tous les lots, même lorsque nous avons essayé de les rendre parallèles, sont allés dans une seule file d'attente. Par conséquent, nous n'avons pas pu améliorer les charges de données pour Meilisearch. Il a fallu environ 2 jours à Meilisearch pour charger seulement 38 % des données, qui consommaient déjà plus de 850 Go d'espace disque. Il s'agit d'un contraste frappant avec Manticore Search, qui stockait l'intégralité de l'ensemble de données en utilisant environ 100 Go d'espace disque et prenait 2 heures et 9 minutes à charger à l'aide d'un seul cœur de processeur (qui est pratiquement linéairement évolutif).


L'incapacité de Meilisearch à traiter l'intégralité du grand ensemble de données Hacker News met en évidence ses défis de gestion et de mise à l'échelle avec des collectes de données plus étendues. Les performances supérieures de Manticore Search dans ce benchmark soulignent sa capacité à gérer les exigences de recherche à grande échelle, ce qui en fait un choix plus approprié pour les applications avec des collections de données plus importantes.

Comme nous n'avons pas pu charger les données dans Meilisearch, vous pouvez consulter les résultats Manticore uniquement ici .

10 millions de journaux NGINX

Ce test est basé sur un ensemble de données contenant 10 millions de journaux NGINX. La source de cet ensemble de données est Kaggle . Les journaux de serveur Web enregistrent divers événements, fournissant des informations précieuses sur les visiteurs du site Web, le comportement des utilisateurs, les robots d'exploration accédant au site, l'informatique décisionnelle, les problèmes de sécurité, etc. Le benchmark utilise une liste organisée de requêtes typiques qu'un ingénieur DevOps aléatoire peut exécuter.

Manticore Search et Meilisearch ont montré une différence significative dans l'utilisation de l'espace disque pour l'ensemble de données. Manticore Search utilisait 4,4 Go d'espace disque, tandis que Meilisearch consommait 69 Go, soit environ 15 fois plus que Manticore. Bien que la différence soit moins dramatique que le test du petit ensemble de données de Hacker News, elle est tout de même remarquable, d'autant plus que l'ensemble de données Logs10m contient moins de données textuelles.


Il a fallu environ 20 minutes à Meilisearch pour remplir les données, tandis que Manticore a terminé en 6 minutes .

Vous pouvez trouver la comparaison détaillée des résultats de performance en utilisant le lien fourni . Veuillez noter que de nombreux résultats vides sont simplement dus à l'incapacité de Meiliesarch à gérer certains types de requêtes. Par conséquent, ces requêtes ont été ignorées pendant le processus d'analyse comparative.



Comparaison des fonctionnalités de Manticore Search et Meilisearch

  • Correspondance de texte intégral
    • ✅ Manticore : plus de 20 opérateurs en texte intégral. Recherche par percolation (recherche en sens inverse).
    • ❌ Meilisearch : très simple : ET et recherche de phrases. Pas de recherche de percolation.
  • Pertinence de la recherche
    • ✅ Manticore utilise des algorithmes de classement classiques éprouvés (BM25, BM15). La pertinence a fait ses preuves. 7 classements intégrés et un classement personnalisé avec plus de 20 facteurs de classement .
    • ❌ Meilisearch revendique une bonne pertinence de recherche mais manque de références publiques pour la validation. 6 règles de classement .
  • Stockage
    • ✅ Manticore : propre stockage par ligne pour les ensembles de données petits/moyens, propre stockage en colonnes avec des exigences de RAM inférieures adaptées aux ensembles de données plus volumineux
    • ❌ Meilisearch : LMDB avec tous ses avantages, ses inconvénients et ses conséquences : par exemple, 205 Go de mémoire virtuelle pour un ensemble de données de 9,1 Mo semblent étranges.
  • Taille de l'index et chargement des données
    • ✅ Manticore prend en charge de grands ensembles de données avec des méthodes d'indexation en colonnes et en lignes. Synchronisez facilement les données de MySQL, PostgreSQL, MS SQL et de toute autre base de données prenant en charge ODBC, XML et CSV. Véritables insertions, remplacements et suppressions transactionnels en temps réel. Journal binaire. Mises à jour des valeurs d'attribut sur place.
    • ❌ Meilisearch a des difficultés avec des ensembles de données plus volumineux et subit une dégradation des performances lors du chargement des documents. Vous pouvez télécharger CSV et JSON. Seulement ajout asynchrone de documents. Aucune mise à jour sur place.
  • Schéma
    • ✅ Manticore : Auto-schéma. ID automatique. Tous les attributs sont filtrables, triables et groupables par défaut.
    • ❌ Meilisearch : Auto-schéma. L'ID peut être sélectionné automatiquement à partir du document. Tous les champs sont interrogeables en texte intégral par défaut, mais les attributs ne sont ni filtrables ni triables. Vous devez choisir le schéma avant de charger les données dans l'index pour éviter une réindexation complète.
  • Performances de recherche
    • ✅ Manticore surpasse Meilisearch en termes de performances de recherche.
    • ❌ Meilisearch est moins adapté aux applications nécessitant une fonctionnalité de recherche rapide et évolutive.
  • La haute disponibilité
    • ✅ Manticore : réplication, tables distribuées prenant en charge les agents distants avec mise en miroir et plusieurs stratégies HA.
    • ❌ Meilisearch : pas de réplication, pas de recherche distribuée, pas de mise en miroir.
  • Tolérance typographique
    • ✅ Meilisearch offre une tolérance aux fautes de frappe plus facile.
    • ❌ Manticore peut gérer la tolérance aux fautes de frappe mais exige un effort plus important dans l'application.
  • Aperçu de la recherche
    • ✅ Meilisearch propose un aperçu de recherche utile - une interface utilisateur intégrée pour rechercher dans les données de l'instance.
    • ❌ Manticore n'a pas cette fonctionnalité.
  • Tokénisation
    • ✅ Manticore : tokenisation hautement flexible : caractères symboliques, caractères mélangés, caractères ignorés, règles de tokenisation des expressions régulières, etc., formes de mots, mots vides, synonymes, possibilité de créer des plugins de tokenisation, morphologie pour différentes langues basée sur des stemmers et des lemmatiseurs.
    • ❌ Meilisearch : le tokenizer dépend de la langue : segmenteur Unicode pour la plupart des langues, tokenizers spécifiques pour le chinois, le japonais, l'hébreu et le thaï. Synonymes. Mots vides.
  • Authentification
    • ✅ Meilisearch : authentification intégrée.
    • ❌ Manticore : pas d'authentification intégrée.
  • Interfaces
    • ✅ Manticore : SQL-first, vous pouvez vous connecter à l'aide d'un client MySQL. Interface HTTP JSON. Interface binaire pour des temps de réponse extrêmement courts. Clients pour : PHP, Python, JavaScript, Java, C#, Elixir, Golang.
    • ❌ Meilisearch : Interface HTTP JSON. Clients pour : JavaScript, Python, PHP, Java, Ruby, Golang, C#, Rust, Swift, Dart.
  • Cas d'utilisation
    • ✅ Manticore : recherche de journaux, plateformes de commerce électronique, sites Web riches en contenu, applications d'entreprise.
    • ❌ Meilisearch : projets à petite échelle avec des données et des exigences de recherche limitées.

Cas d'utilisation

Cas d'utilisation pour Manticore Search

  1. Plateformes de commerce électronique : Manticore Search peut gérer efficacement de grands catalogues de produits, en fournissant des résultats de recherche pertinents aux clients grâce à sa fonctionnalité avancée à facettes . Cela améliore les taux de conversion et améliore l'expérience d'achat globale, ce qui en fait une fonctionnalité très recherchée pour les plateformes de commerce électronique.
  2. Sites Web riches en contenu : Manticore Search peut indexer et effectuer des recherches dans de vastes bibliothèques de contenu, telles que des sites d'actualités, des blogs ou des bases de connaissances. Avec un classement en texte intégral approprié, il garantit aux utilisateurs de trouver rapidement et efficacement les informations dont ils ont besoin, contribuant ainsi à un engagement accru des utilisateurs.
  3. Applications d'entreprise : l'évolutivité et les capacités de recherche avancées de Manticore Search en font la solution idéale pour les applications d'entreprise à grande échelle, y compris les systèmes de gestion de la relation client (CRM), les systèmes de gestion de documents et les portails intranet, où une fonctionnalité de recherche précise et efficace est essentielle.
  4. Recherche de journaux : Manticore Search est idéal pour rechercher dans les journaux, car il peut gérer et rechercher efficacement des journaux volumineux. Sa vitesse et ses performances en font un excellent choix pour l'analyse et la surveillance des journaux.

Cas d'utilisation pour Meilisearch

Projets à petite échelle : la nature légère et la facilité de déploiement de Meilisearch le rendent adapté aux petits projets avec des exigences limitées en matière de données et de recherche, tels que le commerce électronique à petite échelle, les sites Web personnels, les annuaires locaux ou les applications Web simples, où le chargement rapide des données, les fonctionnalités de recherche avancées et l'évolutivité ne sont pas des facteurs critiques.

Conclusion

Lors du choix d'un moteur de recherche pour votre projet, il est essentiel de prendre en compte des facteurs tels que la pertinence de la recherche, l'évolutivité et les performances. Manticore Search se distingue comme le meilleur choix pour diverses applications et cas d'utilisation, garantissant des performances et une pertinence de recherche optimales, quelle que soit la taille de l'ensemble de données. Ses capacités de recherche et d'analyse avancées en font un choix fiable pour les projets qui exigent des fonctionnalités de recherche hautes performances.


Meilisearch convient aux petits projets où les fonctionnalités de recherche avancées et l'évolutivité ne sont pas des facteurs critiques.


En fin de compte, le choix entre Manticore Search et Meilisearch dépendra de vos besoins spécifiques et des exigences du projet.


Également publié ici.