No cenário digital em constante evolução, os mecanismos de pesquisa desempenham um papel cada vez mais crucial ao potencializar as funcionalidades de pesquisa em várias plataformas. Entre os mecanismos de busca populares, Meilisearch e Manticore Search se destacam com suas ofertas exclusivas.
No entanto, escolher o mecanismo de pesquisa certo para o seu projeto requer uma compreensão completa de seu desempenho, casos de uso e limitações. Este artigo tem como objetivo fornecer uma comparação entre Meilisearch e Manticore Search, com foco em seu conjunto de recursos e ingestão de dados e desempenho de pesquisa em três benchmarks do mundo real: 10 milhões de logs NGINX, conjunto de dados de 1,1 milhão de documentos do Hacker News e conjunto de dados de 116 milhões de documentos do Hacker News todos disponíveis em DB Benchmarks . Todos os scripts de teste de desempenho, configurações e coletas de dados estão disponíveis publicamente e podem ser reproduzidos.
Tanto o Manticore quanto o Meilisearch se posicionam como mecanismos de pesquisa de texto completo. O elemento-chave nos mecanismos de pesquisa de texto completo é como eles classificam os documentos durante uma pesquisa.
Escolher o algoritmo de classificação de pesquisa correto é crucial para garantir que os usuários possam encontrar as informações de que precisam com precisão e recuperação. No contexto da relevância da pesquisa de texto completo, é essencial entender como esses algoritmos funcionam e como eles contribuem para fornecer resultados de pesquisa precisos e significativos.
O Manticore Search é muito flexível no controle da classificação de pesquisa e expõe dezenas de fatores de classificação; no entanto, por padrão, ele emprega o algoritmo clássico BM25 e seus derivados. O BM25 é um algoritmo de recuperação de informações bem estabelecido que calcula a relevância de documentos com base na frequência do termo e na frequência inversa do documento.
Uma solicitação pull contínua para o benchmark BEIR (Benchmarking and Evaluation of Information Retrieval) demonstra o compromisso da Manticore Search com a relevância da pesquisa. O BEIR é uma estrutura de avaliação que mede o desempenho dos sistemas de recuperação de informações em várias tarefas, como recuperação de documentos e resposta a perguntas. Os resultados do benchmark BEIR podem ser encontrados aqui:
https://docs.google.com/spreadsheets/d/1_ZyYkPJ_K0st9FJBrjbZqX14nmCCPVlE_y3a_y5KkYI/edit#gid=0 .
Por outro lado, Meilisearch afirma oferecer boa relevância de pesquisa, mas não há referências públicas disponíveis para substanciar essa afirmação. De acordo com uma discussão no Hacker News , os usuários do Meilisearch mencionaram sua relevância de pesquisa, mas sem nenhuma evidência empírica, é difícil comparar objetivamente seu desempenho com o Manticore Search.
No geral, o uso de algoritmos de classificação comprovados e a participação da Manticore Search no benchmark BEIR destacam seu compromisso em fornecer resultados de pesquisa altamente relevantes, tornando-a uma escolha confiável para vários aplicativos. Embora o Meilisearch também possa se destacar na relevância da pesquisa de texto completo, é difícil fazer uma declaração definitiva, pois não há benchmarks estabelecidos e o algoritmo usado não é amplamente conhecido.
O Manticore Search demonstra sua capacidade de lidar efetivamente com grandes conjuntos de dados (por exemplo, teste de corridas de táxi de 1,7 bilhão de documentos ou simplesmente Craigslist.org ) por meio do uso de armazenamentos lineares e colunares. A abordagem colunar foi projetada especificamente para acelerar o desempenho da pesquisa e diminuir o consumo de RAM em grandes conjuntos de dados. Em contraste, o armazenamento em linha padrão do Manticore Search oferece desempenho imbatível em conjuntos de dados pequenos e médios. Essa flexibilidade torna o Manticore Search uma escolha ideal para uma ampla gama de aplicações.
O Meilisearch, por outro lado, luta com conjuntos de dados maiores, pois não foi possível carregar o conjunto de dados maior do Hacker News no mecanismo de pesquisa, mesmo após 2 dias de carregamento. Além disso, Meilisearch experimenta uma degradação no desempenho ao carregar documentos. À medida que o conjunto de dados cresce, o tempo necessário para carregar cada lote subsequente de documentos aumenta. Esse problema de desempenho indica que Meilisearch tem um problema com escalabilidade de dados e pode ser problemático para aplicativos que requerem ingestão de dados em tempo real ou indexação de grandes conjuntos de dados. Meilisearch processa atualizações de documentos em uma única fila, o que pode levar a gargalos e redução de desempenho ao longo do tempo.
É crucial observar que as atualizações de documentos no Meilisearch não são refletidas instantaneamente nas consultas de pesquisa. Isso ocorre porque o Meilisearch emprega uma fila de tarefas assíncrona para lidar com atualizações, garantindo que o desempenho da pesquisa permaneça estável mesmo durante operações de indexação intensivas.
Ao atualizar um documento, a alteração é adicionada à fila de tarefas e processada pelo mecanismo em segundo plano. Depois que a tarefa é concluída, os dados atualizados ficam disponíveis nos resultados da pesquisa. O tempo de processamento pode variar dependendo do tamanho da atualização e dos recursos do servidor. Para monitorar o status da tarefa, você pode utilizar a API de Tarefas , que oferece informações sobre o andamento e a conclusão da tarefa.
rt, substituir e excluir recursos, permitindo que as alterações sejam imediatamente visíveis assim que a consulta for concluída.
Em resumo, embora o Meilisearch forneça recursos de pesquisa rápidos e eficientes, lembre-se de que as atualizações nos documentos podem não ser imediatamente visíveis nos resultados da pesquisa devido ao processamento assíncrono da tarefa.
O Meilisearch é conhecido por sua velocidade impressionante, superando o Elasticsearch em muitos casos . No entanto, seu desempenho é mais perceptível ao trabalhar com pequenos conjuntos de dados. À medida que o tamanho do conjunto de dados aumenta, o desempenho do Meilisearch pode diminuir.
O Manticore Search fornece consistentemente um desempenho de consulta rápido para vários tipos de consulta e tipos de conjunto de dados, superando o Meilisearch e o Elasticsearch . Com métodos otimizados de indexação por linha e colunar, o Manticore garante uma experiência de pesquisa responsiva, crucial para manter o envolvimento do usuário em aplicativos de alto desempenho.
Em contraste, o Meilisearch luta para lidar eficientemente com grandes conjuntos de dados e sofre com a degradação do desempenho durante o carregamento do documento. Portanto, o Manticore é a escolha superior para quem não quer se preocupar com o tamanho do conjunto de dados.
O benchmark de pequeno conjunto de dados do Hacker News, que apresenta uma coleção de 1,1 milhão de comentários selecionados do Hacker News com campos numéricos (fonte: https://zenodo.org/record/45901/ ), destaca o desempenho de pesquisa superior do Manticore Search em relação ao Meilisearch. O conjunto de dados contém dados textuais de comentários e campos numéricos, como upvotes, timestamps e IDs de usuário. O teste de benchmark envolve a execução de consultas analíticas e de texto completo para avaliar os recursos dos mecanismos de pesquisa.
Os resultados do benchmark também podem ser verificados neste link .
Infelizmente, o Meilisearch não é capaz de executar muitos tipos de consultas, como consultas de agregação e aquelas com termos negativos de pesquisa de texto completo.
Um aspecto interessante deste benchmark é a diferença significativa no uso do espaço em disco entre os dois mecanismos de busca:
[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 .
O Meilisearch requer 34x mais espaço em disco para armazenar o mesmo conjunto de dados em comparação com o Manticore Search.
Em termos de desempenho de carregamento de dados, foram necessários:
para concluir totalmente o carregamento de dados.
Este teste envolve o mesmo conjunto de dados de comentários do Hacker News com curadoria de 1,1 milhão (fonte: https://zenodo.org/record/45901/ ), mas multiplicado 100 vezes, resultando em cerca de 116 milhões de documentos . O benchmark abrange consultas de texto completo e analíticas, tornando-o um excelente caso de teste para avaliar os recursos do mecanismo de pesquisa em uma escala maior.
Meilisearch não pôde carregar os dados em 2 dias. Seu desempenho de inserções foi degradado à medida que o banco de dados crescia. Tentamos otimizá-lo, mas não tivemos sucesso, pois todos os lotes, mesmo quando tentamos torná-los paralelos, iam para uma única fila. Como resultado, não conseguimos nenhuma melhoria nas cargas de dados para Meilisearch. O Meilisearch demorou cerca de 2 dias para carregar apenas 38% dos dados, que já consumiam mais de 850 GB de espaço em disco. Isso é um grande contraste com o Manticore Search, que armazenou todo o conjunto de dados usando aproximadamente 100 GB de espaço em disco e levou 2 horas e 9 minutos para carregar usando um único núcleo de CPU (que é praticamente linearmente escalável).
A incapacidade do Meilisearch de processar todo o grande conjunto de dados do Hacker News destaca seus desafios no gerenciamento e dimensionamento com coleções de dados mais extensas. O desempenho superior do Manticore Search neste benchmark ressalta sua capacidade de lidar com requisitos de pesquisa em larga escala, tornando-o uma escolha mais adequada para aplicativos com coleções de dados maiores.
Como não foi possível carregar os dados no Meilisearch, você pode verificar os resultados somente do Manticore aqui .
Este teste é baseado em um conjunto de dados contendo 10 milhões de logs NGINX. A fonte desse conjunto de dados é o Kaggle . Os logs do servidor da Web registram vários eventos, fornecendo informações valiosas sobre os visitantes do site, comportamento do usuário, rastreadores que acessam o site, inteligência comercial, problemas de segurança e muito mais. O benchmark usa uma lista selecionada de consultas típicas que um engenheiro de DevOps aleatório pode executar.
Manticore Search e Meilisearch exibiram uma diferença significativa no uso de espaço em disco para o conjunto de dados. O Manticore Search usou 4,4 GB de espaço em disco, enquanto o Meilisearch consumiu 69 GB, o que é aproximadamente 15 vezes mais do que o Manticore. Embora a diferença seja menos dramática do que o teste do pequeno conjunto de dados do Hacker News, ainda é notável, especialmente considerando que o conjunto de dados Logs10m contém menos dados de texto.
O Meilisearch levou cerca de 20 minutos para preencher os dados, enquanto o Manticore terminou em 6 minutos .
Você pode encontrar a comparação detalhada dos resultados de desempenho usando o link fornecido . Observe que muitos resultados vazios são simplesmente devido à incapacidade do Meiliesarch de lidar com certos tipos de consultas. Como resultado, essas consultas foram ignoradas durante o processo de benchmarking.
Projetos de pequena escala: a natureza leve e a facilidade de implantação do Meilisearch o tornam adequado para pequenos projetos com dados limitados e requisitos de pesquisa, como comércio eletrônico de pequena escala, sites pessoais, diretórios locais ou aplicativos da Web simples, onde o carregamento rápido de dados, recursos de pesquisa avançada e escalabilidade não são fatores críticos.
Ao escolher um mecanismo de pesquisa para o seu projeto, é crucial considerar fatores como relevância da pesquisa, escalabilidade e desempenho. O Manticore Search se destaca como a escolha superior para diversos aplicativos e casos de uso, garantindo desempenho e relevância de pesquisa ideais, independentemente do tamanho do conjunto de dados. Seus recursos avançados de pesquisa e análise o tornam uma escolha confiável para projetos que exigem funcionalidade de pesquisa de alto desempenho.
Meilisearch é adequado para pequenos projetos onde recursos de pesquisa avançada e escalabilidade não são fatores críticos.
Em última análise, a escolha entre Manticore Search e Meilisearch dependerá de suas necessidades específicas e requisitos do projeto.
Também publicado aqui.