paint-brush
Comparación de Meilisearch y Manticore Search utilizando puntos de referencia clavepor@snikolaev
4,274 lecturas
4,274 lecturas

Comparación de Meilisearch y Manticore Search utilizando puntos de referencia clave

por Sergey Nikolaev10m2023/05/02
Read on Terminal Reader

Demasiado Largo; Para Leer

Los motores de búsqueda desempeñan un papel cada vez más crucial en la potenciación de las funcionalidades de búsqueda en varias plataformas. 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.
featured image - Comparación de Meilisearch y Manticore Search utilizando puntos de referencia clave
Sergey Nikolaev HackerNoon profile picture
0-item
1-item

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.

Relevancia de búsqueda de texto completo

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.

Tamaño del índice e ingesta de datos

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.


Manticore ofrece información en tiempo real

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.

Rendimiento de búsqueda

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.

Pruebas comparativas

Pequeño conjunto de datos de Hacker News (Comentarios de Hacker News)

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ó:


  • Meilisearch 31 minutos
  • Mantícora 65 segundos


para completar completamente la carga de datos.

Gran conjunto de datos de Hacker News (116 millones de comentarios)

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í .

10 millones de registros NGINX

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.



Características Comparación de Manticore Search y Meilisearch

  • Coincidencia de texto completo
    • ✅ Manticore: más de 20 operadores de texto completo. Búsqueda de percolado (búsqueda a la inversa).
    • ❌ Meilisearch: muy simple: AND y búsqueda de frases. Sin búsqueda de filtrado.
  • Relevancia de búsqueda
    • ✅ Manticore emplea algoritmos de clasificación clásicos probados (BM25, BM15). La relevancia está probada por puntos de referencia. 7 clasificadores integrados y un clasificador personalizado con más de 20 factores de clasificación .
    • ❌ Meilisearch afirma tener una buena relevancia de búsqueda, pero carece de puntos de referencia públicos para la validación. 6 reglas de clasificación .
  • Almacenamiento
    • ✅ Manticore: almacenamiento propio en filas para conjuntos de datos pequeños y medianos, almacenamiento en columnas propio con requisitos de RAM más bajos adecuados para conjuntos de datos más grandes
    • ❌ Meilisearch: LMDB con todas sus ventajas, desventajas y consecuencias: por ejemplo, el requisito de memoria virtual de 205 GB para un conjunto de datos de 9,1 MB parece extraño.
  • Tamaño del índice y carga de datos
    • ✅ Manticore admite grandes conjuntos de datos con métodos de indexación en columnas y filas. Sincronice fácilmente datos de MySQL, PostgreSQL, MS SQL y cualquier otra base de datos compatible con ODBC, XML y CSV. Inserciones, reemplazos y eliminaciones transaccionales en tiempo real. Registro binario. Actualizaciones de valores de atributos en el lugar.
    • ❌ Meilisearch tiene dificultades con conjuntos de datos más grandes y experimenta una degradación del rendimiento durante la carga de documentos. Puede cargar CSV y JSON. Solo adición asíncrona de documentos. No hay actualizaciones en el lugar.
  • Esquema
    • ✅ Mantícora: Auto-esquema. Identificación automática. Todos los atributos se pueden filtrar, clasificar y agrupar de forma predeterminada.
    • ❌ Meilisearch: Auto-esquema. La identificación se puede seleccionar automáticamente del documento. Todos los campos se pueden buscar en texto completo de forma predeterminada, pero los atributos no se pueden filtrar ni clasificar. Debe decidir el esquema antes de cargar datos en el índice para evitar una reindexación completa.
  • Rendimiento de búsqueda
    • ✅ Manticore supera a Meilisearch en rendimiento de búsqueda.
    • ❌ Meilisearch es menos adecuado para aplicaciones que requieren una funcionalidad de búsqueda rápida y escalable.
  • Alta disponibilidad
    • ✅ Manticore: replicación, tablas distribuidas que soportan agentes remotos con mirroring y varias estrategias HA.
    • ❌ Meilisearch: sin replicación, sin búsqueda distribuida, sin duplicación.
  • Tolerancia de errores tipográficos
    • ✅ Meilisearch ofrece una mayor tolerancia a los errores tipográficos.
    • ❌ Manticore puede manejar la tolerancia a errores tipográficos, pero exige un mayor esfuerzo en la aplicación.
  • Vista previa de búsqueda
    • ✅ Meilisearch presenta una vista previa de búsqueda útil: una interfaz de usuario integrada para buscar datos en la instancia.
    • ❌ Manticore no tiene esta función.
  • Tokenización
    • ✅ Manticore: tokenización altamente flexible: caracteres simbólicos, caracteres combinados, caracteres ignorados, reglas de tokenización de expresiones regulares, etc., formas de palabras, palabras vacías, sinónimos, opción para crear complementos de tokenización, morfología para varios idiomas basada en lematizadores y lematizadores.
    • ❌ Meilisearch: el tokenizador depende del idioma: segmentador Unicode para la mayoría de los idiomas, tokenizadores específicos para chino, japonés, hebreo y tailandés. Sinónimos. Para las palabras.
  • Autenticación
    • ✅ Meilisearch: autenticación integrada.
    • ❌ Manticore: sin autenticación integrada.
  • Interfaces
    • ✅ Manticore: primero SQL, puede conectarse usando un cliente MySQL. Interfaz HTTP JSON. Interfaz binaria para tiempos de respuesta extremadamente bajos. Clientes para: PHP, Python, JavaScript, Java, C#, Elixir, Golang.
    • ❌ Meilisearch: interfaz HTTP JSON. Clientes para: JavaScript, Python, PHP, Java, Ruby, Golang, C#, Rust, Swift, Dart.
  • Casos de uso
    • ✅ Manticore: búsqueda de registros, plataformas de comercio electrónico, sitios web ricos en contenido, aplicaciones empresariales.
    • ❌ Meilisearch: proyectos a pequeña escala con datos y requisitos de búsqueda limitados.

Casos de uso

Casos de uso para Manticore Search

  1. Plataformas de comercio electrónico: Manticore Search puede administrar de manera eficiente grandes catálogos de productos, brindando resultados de búsqueda relevantes para los clientes con su funcionalidad facetada avanzada . Esto mejora las tasas de conversión y mejora la experiencia de compra en general, lo que la convierte en una función muy solicitada para las plataformas de comercio electrónico.
  2. Sitios web ricos en contenido: Manticore Search puede indexar y buscar a través de extensas bibliotecas de contenido, como sitios de noticias, blogs o bases de conocimientos. Con una clasificación de texto completo adecuada, garantiza que los usuarios encuentren la información que necesitan de forma rápida y eficaz, lo que contribuye a una mayor participación de los usuarios.
  3. Aplicaciones empresariales: la escalabilidad y las capacidades de búsqueda avanzada de Manticore Search lo hacen ideal para aplicaciones empresariales a gran escala, incluidos los sistemas de gestión de relaciones con los clientes (CRM), sistemas de gestión de documentos y portales de intranet, donde la funcionalidad de búsqueda precisa y eficiente es fundamental.
  4. Búsqueda de registros: Manticore Search es ideal para buscar en registros, ya que puede manejar y buscar eficientemente en registros enormes. Su velocidad y rendimiento lo convierten en una excelente opción para el análisis y la supervisión de registros.

Casos de uso para Meilisearch

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.

Conclusión

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í.