新一代搜索引擎,是 ES 的15倍?

devtools/2025/2/3 9:36:57/

Manticore Search介绍

Manticore Search 是一个使用 C++ 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎完全重写了代码并保持开源。这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。

Manticore Search目前在GitHub收获3.7k star,拥有大批忠实用户。同时开源者在GitHub介绍中明确说明了该项目是是Elasticsearch的良好替代品,在不久的将来就会取代ELK中的E。

图片

img

同时,来自 MS 官方的测试表明 Manticore Search 性能比 ElasticSearch 有质的提升:

图片

img

在一定的场景中,Manticore 比 Elasticsearch 快 15 倍!完整的测评结果,可以参考:

  • https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/

优势

它与其他解决方案的区别在于:

  • 它非常快,因此比其他替代方案更具成本效益。例如,Manticore:

    • 对于小型数据,比MySQL快182倍(可重现)

    • 对于日志分析,比Elasticsearch快29倍(可重现)

    • 对于小型数据集,比Elasticsearch快15倍(可重现)

    • 对于中等大小的数据,比Elasticsearch快5倍(可重现)

    • 对于大型数据,比Elasticsearch快4倍(可重现)

    • 在单个服务器上进行数据导入时,最大吞吐量比Elasticsearch快最多2倍(可重现)

  • 由于其现代的多线程架构和高效的查询并行化能力,Manticore能够充分利用所有CPU核心,以实现最快的响应时间。

  • 强大而快速的全文搜索功能能够无缝地处理小型和大型数据集。

  • 针对小、中、大型数据集提供逐行存储。

  • 对于更大的数据集,Manticore通过Manticore Columnar Library提供列存储支持,可以处理无法适合内存的数据集。

  • 自动创建高效的二级索引,节省时间和精力。

  • 成本优化的查询优化器可优化搜索查询以实现最佳性能。

  • Manticore是基于SQL的,使用SQL作为其本机语法,并与MySQL协议兼容,使您可以使用首选的MySQL客户端。

  • 通过PHP、Python、JavaScript、Java、Elixir和Go等客户端,与Manticore Search的集成变得简单。

  • Manticore还提供了一种编程HTTP JSON协议,用于更多样化的数据和模式管理。

  • Manticore Search使用C++构建,启动快速,内存使用最少,低级别优化有助于其卓越性能。

  • 实时插入,新添加的文档立即可访问。

  • 提供互动课程,使学习轻松愉快。

  • Manticore还拥有内置的复制和负载均衡功能,增加了可靠性。

  • 可以轻松地从MySQL、PostgreSQL、ODBC、xml和csv等来源同步数据。

  • 虽然不完全符合ACID,但Manticore仍支持事务和binlog以确保安全写入。

  • 内置工具和SQL命令可轻松备份和恢复数据。

Craigslist、Socialgist、PubChem、Rozetka和许多其他公司使用 Manticore 进行高效搜索和流过滤。

使用

Docker 镜像可在Docker Hub上获取:

  • https://hub.docker.com/r/manticoresearch/manticore/

要在 Docker 中试验 Manticore Search,只需运行:

docker run -e EXTRA=1 --name manticore --rm -d manticoresearch/manticore && until docker logs manticore 2>&1 | grep -q "accepting connections"; do sleep 1; done && docker exec -it manticore mysql && docker stop manticore

之后,可以进行其他操作,例如创建表、添加数据并运行搜索:

create table movies(title text, year int) morphology='stem_en' html_strip='1' stopwords='en';insert into movies(title, year) values ('The Seven Samurai', 1954), ('Bonnie and Clyde', 1954), ('Reservoir Dogs', 1992), ('Airplane!', 1980), ('Raging Bull', 1980), ('Groundhog Day', 1993), ('<a href="http://google.com/">Jurassic Park</a>', 1993), ('Ferris Bueller\'s Day Off', 1986);select highlight(), year from movies where match('the dog');select highlight(), year from movies where match('days') facet year;select * from movies where match('google');

完整文档和开源代码,可以移步:

  • https://github.com/manticoresoftware/manticoresearch

来源:github.com/manticoresoftware/manticoresearch

—END—


http://www.ppmy.cn/devtools/155678.html

相关文章

C#面向对象(封装)

1.什么是封装? C# 封装 封装 被定义为“把一个或多个项目封闭在一个物理的或者逻辑的包中”。 在面向对象程序设计方法论中&#xff0c;封装是为了防止对实现细节的访问。 抽象和封装是面向对象程序设计的相关特性。 抽象允许相关信息可视化&#xff0c;封装则使开发者实现所…

CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 影响范围 防御措施 复现步骤 环境准备 具体操作 前言 在网络安全这片没有硝烟的战场上&#xff0c;新型漏洞如同隐匿的暗箭&#xff0c;时刻威胁着我们的数字生活。其中&#xff0c;CVE - 2023 - 38831 这个关联 Win10 压缩包挂…

Kafka常见问题之 java.io.IOException: Disk error when trying to write to log

文章目录 Kafka常见问题之 java.io.IOException: Disk error when trying to write to log1. 问题概述2. 问题排查方向&#xff08;1&#xff09;磁盘空间不足&#xff08;2&#xff09;磁盘 I/O 故障&#xff08;3&#xff09;Kafka 日志文件损坏&#xff08;4&#xff09;Kaf…

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的&#xff1f;如何监控和调整Elasticsearch ILM策略的性能&#xff1f; 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…

【背包问题】二维费用的背包问题

目录 二维费用的背包问题详解 总结&#xff1a; 空间优化&#xff1a; 1. 状态定义 2. 状态转移方程 3. 初始化 4. 遍历顺序 5. 时间复杂度 例题 1&#xff0c;一和零 2&#xff0c;盈利计划 二维费用的背包问题详解 前面讲到的01背包中&#xff0c;对物品的限定条件…

【llm对话系统】大模型源码分析之llama模型的long context更长上下文支持

1. 引言 Llama模型的一个重要特性是支持长上下文处理。本文将深入分析Llama源码中实现长上下文的关键技术点&#xff0c;包括位置编码(position embedding)的外推方法、注意力机制的优化等。我们将通过详细的代码解析来理解其实现原理。 2. 位置编码的外推实现 2.1 旋转位置…

【python】python油田数据分析与可视化(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【python】python油田数据分析与可视化&#xff08…

【Qt】Qt老版本解决中文乱码

修改Pro文件 Qt 老版本&#xff08;Qt5 MSVC2017&#xff0c;其他版本的可以试一试&#xff09;出现中文乱码&#xff0c;只要字符串中有中文就会乱码&#xff1a; 工具->选项->文本编辑器: 修改Pro文件 以上修改后若还乱码&#xff0c;则在项目中的 .pro 文件添加以…