En el panorama digital en constante evolución, los motores de búsqueda desempeñan un papel cada vez más crucial para impulsar las funcionalidades de búsqueda en varias plataformas. Entre los motores de búsqueda populares, Meilisearch y Manticore Search se destacan con sus ofertas únicas.
Sin embargo, elegir el motor de búsqueda adecuado para su proyecto requiere una comprensión profunda de su rendimiento, casos de uso y limitaciones. Este artículo tiene como objetivo proporcionar una comparación de Meilisearch y Manticore Search, centrándose en su conjunto de funciones y la ingestión de datos y el rendimiento de búsqueda en tres puntos de referencia del mundo real: 10 millones de registros NGINX, conjunto de datos de 1,1 millones de documentos de Hacker News y conjunto de datos de 116 millones de documentos de Hacker News todos disponibles en DB Benchmarks . Todos los scripts de prueba de rendimiento, las configuraciones y las recopilaciones de datos están disponibles públicamente y son reproducibles.
Tanto Manticore como Meilisearch se posicionan como motores de búsqueda de texto completo. El elemento clave en los motores de búsqueda de texto completo es cómo clasifican los documentos durante una búsqueda.
Elegir el algoritmo de clasificación de búsqueda correcto es crucial para garantizar que los usuarios puedan encontrar la información que necesitan con precisión y recordación. En el contexto de la relevancia de la búsqueda de texto completo, es esencial comprender cómo funcionan estos algoritmos y cómo contribuyen a proporcionar resultados de búsqueda precisos y significativos.
Manticore Search es muy flexible para controlar la clasificación de búsqueda y expone docenas de factores de clasificación; sin embargo, por defecto, emplea el algoritmo clásico BM25 y sus derivados. BM25 es un algoritmo de recuperación de información bien establecido que calcula la relevancia de los documentos en función de la frecuencia de los términos y la frecuencia inversa de los documentos.
Una solicitud de extracción en curso para el punto de referencia BEIR (Benchmarking and Evaluation of Information Retrieval) demuestra el compromiso de Manticore Search con la relevancia de la búsqueda. BEIR es un marco de evaluación que mide el rendimiento de los sistemas de recuperación de información en varias tareas, como la recuperación de documentos y la respuesta a preguntas. Los resultados del benchmark BEIR se pueden encontrar aquí:
https://docs.google.com/spreadsheets/d/1_ZyYkPJ_K0st9FJBrjbZqX14nmCCPVlE_y3a_y5KkYI/edit#gid=0 .
Por el contrario, Meilisearch afirma ofrecer una buena relevancia de búsqueda, pero no hay puntos de referencia públicos disponibles para corroborar esta afirmación. Según una discusión en Hacker News , los usuarios de Meilisearch han mencionado su relevancia de búsqueda, pero sin ninguna evidencia empírica, es difícil comparar objetivamente su rendimiento con Manticore Search.
En general, el uso de Manticore Search de algoritmos de clasificación probados y la participación en el benchmark BEIR destaca su compromiso de proporcionar resultados de búsqueda altamente relevantes, lo que lo convierte en una opción confiable para diversas aplicaciones. Si bien Meilisearch también puede sobresalir en la relevancia de la búsqueda de texto completo, es difícil hacer una declaración definitiva ya que no existen puntos de referencia establecidos y el algoritmo utilizado no es ampliamente conocido.
Manticore Search demuestra su capacidad para gestionar de forma eficaz grandes conjuntos de datos (p. ej ., 1700 millones de documentos de prueba de viajes en taxi o simplemente Craigslist.org ) mediante el uso de almacenamientos en filas y columnas. El enfoque en columnas está diseñado específicamente para acelerar el rendimiento de la búsqueda y reducir el consumo de RAM en grandes conjuntos de datos. Por el contrario, el almacenamiento por filas predeterminado de Manticore Search ofrece un rendimiento inigualable en conjuntos de datos pequeños y medianos. Esta flexibilidad hace de Manticore Search una opción ideal para una amplia gama de aplicaciones.
Meilisearch, por otro lado, tiene problemas con conjuntos de datos más grandes, ya que no pudimos cargar el conjunto de datos más grande de Hacker News en el motor de búsqueda incluso después de 2 días de carga. Además, Meilisearch experimenta una degradación en el rendimiento al cargar documentos. A medida que crece el conjunto de datos, aumenta el tiempo que se tarda en cargar cada lote de documentos posterior. Este problema de rendimiento indica que Meilisearch tiene un problema con la escalabilidad de los datos y podría ser problemático para las aplicaciones que requieren la ingestión de datos en tiempo real o la indexación de grandes conjuntos de datos. Meilisearch procesa las actualizaciones de documentos en una sola cola, lo que puede provocar cuellos de botella y reducir el rendimiento con el tiempo.
Es crucial tener en cuenta que las actualizaciones de documentos en Meilisearch no se reflejan instantáneamente en las consultas de búsqueda. Esto se debe a que Meilisearch emplea una cola de tareas asíncrona para manejar las actualizaciones, lo que garantiza que el rendimiento de la búsqueda se mantenga estable incluso durante las operaciones de indexación intensivas.
Al actualizar un documento, el cambio se agrega a la cola de tareas y el motor lo procesa en segundo plano. Una vez completada la tarea, los datos actualizados estarán disponibles en los resultados de búsqueda. El tiempo de procesamiento puede variar según el tamaño de la actualización y los recursos del servidor. Para monitorear el estado de la tarea, puede utilizar la API de tareas , que ofrece información sobre el progreso y la finalización de la tarea.
capacidades rt, replace y delete, lo que permite que los cambios sean inmediatamente visibles tan pronto como se complete la consulta.
En resumen, si bien Meilisearch brinda capacidades de búsqueda rápidas y eficientes, tenga en cuenta que es posible que las actualizaciones de los documentos no se vean inmediatamente en los resultados de la búsqueda debido al procesamiento asincrónico de tareas.
Meilisearch es conocido por su impresionante velocidad, superando a Elasticsearch en muchos casos . Sin embargo, su rendimiento es más notable cuando se trabaja con conjuntos de datos pequeños. A medida que aumenta el tamaño del conjunto de datos, el rendimiento de Meilisearch puede disminuir.
Manticore Search ofrece constantemente un rendimiento rápido de consultas para varios tipos de consultas y tipos de conjuntos de datos, superando tanto a Meilisearch como a Elasticsearch . Con métodos optimizados de indexación por filas y columnas, Manticore garantiza una experiencia de búsqueda receptiva, crucial para mantener la participación del usuario en aplicaciones de alto rendimiento.
Por el contrario, Meilisearch tiene dificultades para manejar grandes conjuntos de datos de manera eficiente y sufre una degradación del rendimiento durante la carga de documentos. Por lo tanto, Manticore es la mejor opción para aquellos que no quieren preocuparse por el tamaño de su conjunto de datos.
El punto de referencia del conjunto de datos pequeños de Hacker News, que presenta una colección de 1,1 millones de comentarios seleccionados de Hacker News con campos numéricos (fuente: https://zenodo.org/record/45901/ ), destaca el mayor rendimiento de búsqueda de Manticore Search sobre Meilisearch. El conjunto de datos contiene datos textuales de comentarios y campos numéricos, como votos a favor, marcas de tiempo e ID de usuario. La prueba comparativa implica ejecutar consultas analíticas y de texto completo para evaluar las capacidades de los motores de búsqueda.
Los resultados de referencia también se pueden verificar a través de este enlace .
Desafortunadamente, Meilisearch no es capaz de ejecutar muchos tipos de consultas, como consultas de agregación y aquellas con términos de búsqueda de texto completo negativos.
Un aspecto interesante de este punto de referencia es la diferencia significativa en el uso del espacio en disco entre los dos motores de búsqueda:
[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 requiere 34 veces más espacio en disco para almacenar el mismo conjunto de datos en comparación con Manticore Search.
En términos de rendimiento de carga de datos, tomó:
para completar completamente la carga de datos.
Esta prueba involucra el mismo conjunto de datos de 1,1 millones de comentarios seleccionados de Hacker News (fuente: https://zenodo.org/record/45901/ ), pero multiplicado 100 veces, lo que da como resultado unos 116 millones de documentos . El punto de referencia cubre consultas analíticas y de texto completo, lo que lo convierte en un excelente caso de prueba para evaluar las capacidades del motor de búsqueda a mayor escala.
Meilisearch no pudo cargar los datos en 2 días. Su rendimiento de inserciones se degradó a medida que crecía la base de datos. Intentamos optimizarlo pero no tuvimos éxito ya que todos los lotes, incluso cuando intentamos hacerlos en paralelo, entraron en una sola cola. Como resultado, no pudimos lograr ninguna mejora en las cargas de datos para Meilisearch. Meilisearch tardó alrededor de 2 días en cargar solo el 38 % de los datos, que ya consumían más de 850 GB de espacio en disco. Este es un marcado contraste con Manticore Search, que almacenó todo el conjunto de datos usando aproximadamente 100 GB de espacio en disco y tardó 2 horas y 9 minutos en cargarse usando un solo núcleo de CPU (que es virtualmente escalable linealmente).
La incapacidad de Meilisearch para procesar todo el gran conjunto de datos de Hacker News destaca sus desafíos en la gestión y escalabilidad con recopilaciones de datos más extensas. El desempeño superior de Manticore Search en este punto de referencia destaca su capacidad para manejar requisitos de búsqueda a gran escala, lo que lo convierte en una opción más adecuada para aplicaciones con colecciones de datos más grandes.
Como no pudimos cargar los datos en Meilisearch, puede consultar los resultados solo de Manticore aquí .
Esta prueba se basa en un conjunto de datos que contiene 10 millones de registros NGINX. La fuente de este conjunto de datos es Kaggle . Los registros del servidor web registran varios eventos, lo que brinda información valiosa sobre los visitantes del sitio web, el comportamiento del usuario, los rastreadores que acceden al sitio, la inteligencia comercial, los problemas de seguridad y más. El punto de referencia utiliza una lista seleccionada de consultas típicas que un ingeniero DevOps aleatorio podría ejecutar.
Manticore Search y Meilisearch exhibieron una diferencia significativa en el uso del espacio en disco para el conjunto de datos. Manticore Search usó 4,4 GB de espacio en disco, mientras que Meilisearch consumió 69 GB, aproximadamente 15 veces más que Manticore. Aunque la diferencia es menos dramática que la prueba de conjuntos de datos pequeños de Hacker News, sigue siendo notable, especialmente considerando que el conjunto de datos de Logs10m contiene menos datos de texto.
Meilisearch tardó alrededor de 20 minutos en completar los datos, mientras que Manticore terminó en 6 minutos .
Puede encontrar la comparación detallada de los resultados de rendimiento utilizando el enlace proporcionado . Tenga en cuenta que muchos resultados vacíos se deben simplemente a que Meiliesarch no puede manejar ciertos tipos de consultas. Como resultado, estas consultas se omitieron durante el proceso de evaluación comparativa.
Proyectos a pequeña escala: la naturaleza liviana y la facilidad de implementación de Meilisearch lo hacen adecuado para proyectos pequeños con datos limitados y requisitos de búsqueda, como comercio electrónico a pequeña escala, sitios web personales, directorios locales o aplicaciones web simples, donde la carga rápida de datos, las funciones de búsqueda avanzada y la escalabilidad no son factores críticos.
Al elegir un motor de búsqueda para su proyecto, es fundamental tener en cuenta factores como la relevancia de la búsqueda, la escalabilidad y el rendimiento. Manticore Search se destaca como la opción superior para diversas aplicaciones y casos de uso, lo que garantiza un rendimiento y una relevancia de búsqueda óptimos, independientemente del tamaño del conjunto de datos. Sus capacidades avanzadas de búsqueda y análisis lo convierten en una opción confiable para proyectos que exigen una funcionalidad de búsqueda de alto rendimiento.
Meilisearch es adecuado para proyectos pequeños donde las funciones de búsqueda avanzada y la escalabilidad no son factores críticos.
En última instancia, la elección entre Manticore Search y Meilisearch dependerá de sus necesidades específicas y los requisitos del proyecto.
También publicado aquí.