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.
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.
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.
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.
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.
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 :
pour terminer le chargement des données.
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 .
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.
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.
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.