找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1821

积分

0

好友

255

主题
发表于 2025-12-31 02:28:06 | 查看: 20| 回复: 0

Manticore Search 是一款使用 C++ 编写的高性能搜索引擎,诞生于 2017 年,其前身是知名的 Sphinx Search。

它在 Sphinx 的基础上进行了深度改造,显著增强了功能,修复了大量问题,并进行了近乎彻底的重写,同时始终保持开源。这些努力使得 Manticore Search 成为一个现代化、快速、轻量级且功能齐全的数据库,尤其擅长全文搜索。

目前,Manticore Search 在 GitHub 上已获得超过 1.1 万星,拥有大量用户。项目介绍中明确提到,它是 Elasticsearch 的一个优秀替代品,并有望在不远的将来取代 ELK 技术栈中的 “E”(Elasticsearch)。

来自官方的性能测试数据显示,Manticore Search 的性能相比 Elasticsearch 有显著提升。

Manticore Search 与 Elasticsearch 性能对比图
图1:Manticore Search 与 Elasticsearch 查询性能对比

在某些特定场景下,Manticore 的查询速度甚至能达到 Elasticsearch 的 15 倍。完整的测试报告可参考:

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

核心优势

Manticore Search 的独特之处体现在以下几个方面:

  1. 极致的速度与成本效益:其性能远超许多替代方案。

    • 处理小型数据时,比 MySQL 快 182 倍(可复现)。
    • 进行日志分析时,比 Elasticsearch 快 29 倍(可复现)。
    • 处理小型、中型、大型数据集时,分别比 Elasticsearch 快 15 倍、5 倍和 4 倍(均可复现)。
    • 单服务器数据导入峰值吞吐量,比 Elasticsearch 快最多 2 倍(可复现)。
  2. 现代多线程架构:能够充分利用所有 CPU 核心,通过高效的查询并行化实现最短的响应时间。

  3. 强大的全文搜索:可无缝处理各种规模数据集的全文检索需求。

  4. 灵活的存储引擎:为不同规模的数据集提供行式存储,并通过 Manticore Columnar Library 支持列式存储,以处理无法完全放入内存的超大数据集。

  5. 自动化与智能化:支持自动创建高效的二级索引,并拥有成本优化的查询优化器。

  6. 兼容 MySQL 协议:原生使用 SQL 语法,与 MySQL 协议兼容,可以直接使用你熟悉的 MySQL 客户端进行操作。这大大降低了 数据库 开发者的学习和使用成本。

  7. 丰富的生态集成:提供了 PHP、Python、JavaScript、Java、Elixir 和 Go 等多种语言的客户端,并支持 HTTP JSON 协议,便于集成和数据管理。

  8. 高效底层实现:基于 C++ 构建,启动迅速,内存占用小,底层优化到位。

  9. 实时性与高可用:支持实时插入,新文档立即可查;内置数据复制和负载均衡功能。

  10. 便捷的数据同步与运维:可轻松从 MySQL、PostgreSQL、ODBC、XML 和 CSV 等数据源同步数据。支持事务与 Binlog,并提供内置工具方便数据备份恢复。

包括 Craigslist、Socialgist 在内的众多公司都在使用 Manticore Search 来处理高效的搜索和流式过滤任务。

快速上手体验

Manticore Search 提供了 Docker 镜像。想要快速体验,只需运行以下命令:

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

运行后,你可以连接 MySQL 客户端,进行创建表、插入数据和搜索等操作:

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');

项目地址

该项目的源代码和详细文档托管在 GitHub 上,对于这类优秀的 开源实战 项目,深入其代码和社区是学习的最佳途径。

https://github.com/manticoresoftware/manticoresearch

如果你正在寻找一个高性能、轻量级且兼容 SQL 的搜索引擎解决方案,Manticore Search 无疑是一个值得深入评估的选择。更多技术讨论和资源分享,欢迎访问 云栈社区




上一篇:单播、广播、组播:网络通信三大方式详解与流媒体应用场景
下一篇:Spring三种异步流式接口详解:ResponseBodyEmitter、SseEmitter与StreamingResponseBody
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 09:11 , Processed in 0.357862 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表