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

news/2025/2/1 6:46:22 标签: 搜索引擎, elasticsearch, 大数据

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.niftyadmin.cn/n/5839095.html

相关文章

基于云计算、大数据与YOLO设计的火灾/火焰目标检测

摘要&#xff1a;本研究针对火灾早期预警检测需求&#xff0c;采用在Kaggle平台获取数据、采用云计算部署的方式&#xff0c;以YOLOv11构建模型&#xff0c;使用云计算服务器训练模型。经训练&#xff0c;box loss从约3.5降至1.0&#xff0c;cls loss从约4.0降至1.0&#xff0c…

【Java计算机毕业设计】基于Springboot的物业信息管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

【回溯+剪枝】组合问题!

文章目录 77. 组合解题思路&#xff1a;回溯剪枝优化 77. 组合 77. 组合 ​ 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 ​ 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,…

Flink2支持提交StreamGraph到Flink集群

最近研究Flink源码的时候&#xff0c;发现Flink已经支持提交StreamGraph到集群了&#xff0c;替换掉了原来的提交JobGraph。 新增ExecutionPlan接口&#xff0c;将JobGraph和StreamGraph作为实现。 Flink集群Dispatcher也进行了修改&#xff0c;从JobGraph改成了接口Executio…

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算 一、 插入音频及音频设置 1.插入音频&#xff1a;点击菜单栏插入-音频-选择PC上的音频&#xff08;已存在的音频&#xff09;或者录制音频&#xff08;现场录制…

Koa 基础篇(二)—— 路由与中间件

let app new Koa() router.get(“/”,async ctx > { ctx.body “hello koa router” }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000) 运行项目&#xff0c;在浏览器访问本地3000端口&#xff0c;在页面上就会看到输出的语句。这就…

deepseek核心技术:MLA架构-多头潜在注意力

deepseek核心技术:MLA架构-多头潜在注意力 MLA架构即Multi-Head Latent Attention(多头潜在注意力)架构,是一种优化后的注意力机制。以下是对其及相关示例的具体介绍: 工作原理 输入嵌入:将输入序列中的每个元素转换为向量表示,即嵌入向量。例如在处理文本时,将文本中…

Verilog边沿检测

edge_check.v module edge_check(input clk,input in,output neg_edge,output pos_edge);reg r11d0;reg r21d0;assign neg_edge(~r1)&r2;assign pos_edger1&(~r2);always(posedge clk)beginr1<in;r2<r1;endendmodule tb.v timescale 1ns/1nsmodule tb; //被测…