放弃Elasticsearch吧:这款轻量级搜索引擎更好用

作者:袖梨 2026-05-23

01 引言

在开发社交类应用时,实现内容检索功能是常见需求。传统方案往往选择全文检索工具,而Manticore Search作为轻量级搜索引擎,在SQL支持和性能表现上都颇具优势。

02 Manticore Search 简介

img_6a118073f3ca730.webp

作为高性能搜索引擎数据库,Manticore Search专为搜索和数据分析场景优化。该产品源自Sphinx Search,经过2017年重构后独立发展。核心特性包括:

  1. 卓越的全文检索性能:支持20余种运算符和排名因子
  2. 实时索引更新:文档变更即时生效
  3. 向量搜索能力:支持KNN算法实现语义搜索
  4. 灵活的存储方案:可选列式存储降低内存消耗
  5. 多协议支持:兼容MySQL协议和HTTP JSON接口
  6. 集群扩展:通过Galera实现多主复制

这款C++编写的开源工具启动迅速,内存占用极低,其潜力尚未被国内市场充分认知。

03 核心功能

3.1 全文检索

match运算符支持复杂查询构建,通过分词器处理输入文本,并支持多种全文操作符。需要注意的是:

  1. 全文匹配可与属性过滤器进行AND运算
  2. 单个SELECT语句仅支持一个MATCH()子句
  3. 支持JOIN等高级查询语法

特色功能包括:

  1. 拼写纠错和自动补全
  2. 同义词扩展与词形还原
  3. 精准的中文分词处理
  4. 搜索结果高亮显示
  5. 自定义排序规则配置

3.2 向量搜索

结合机器学习模型,可实现:

  1. 语义搜索功能
  2. 相似内容推荐
  3. 多媒体相似性检索

3.3 结构化查询

除全文检索外,还支持:

  1. 数值范围过滤
  2. 多条件布尔组合
  3. 跨表关联查询
  4. 聚合统计分析

3.4 存储模式

提供行式存储和列式存储两种方案,后者更适合海量数据分析场景,与Starrocks等NewSQL数据库采用相同技术路线。

04 基于Match的实践

通过Docker可快速搭建环境:

docker pull manticoresearch/manticore
docker run --name manticore -p9306:9306 -p9308:9308 -p9312:9312 -d manticoresearch/manticore

img_6a118073f3cac31.webp

4.1 准备工作

Java项目需添加依赖:

<dependency>
    <groupId>com.manticoresearchgroupId>
    <artifactId>manticoresearchartifactId>
    <version>8.1.0version>
dependency>

初始化客户端连接:

ApiClient apiClient = Configuration.getDefaultApiClient();
apiClient.setBasePath("http://ip:9308");

img_6a118073f3caf32.webp

4.2 SQL 查询

原生SQL查询示例:

String sql = "select * from blogs where match('Docker') and id < 100";
SqlResponse response = utilsApi.sql(sql, true);
// 结果处理逻辑

关键点说明:

  1. 通过UtilsApi.sql()执行原始SQL
  2. match()函数实现全文检索
  3. 使用JSON解析返回结果

img_6a118073f3cb133.webp

img_6a118073f3cb234.webp

4.3 SearchApi

REST API调用方式:

SearchQuery searchQuery = new SearchQuery();
// 构建查询条件
SearchResponse response = searchApi.search(searchRequest);

组合查询要点:

  1. 支持must/must_not/should/filter四种逻辑组合
  2. 本例演示AND条件组合:内容匹配"Docker"且ID小于100

img_6a118073f3cb435.webp

4.4 性能对比

10万条数据测试结果:

img_6a118073f3cb636.webp

MySQL LIKE查询耗时约142ms

img_6a118073f3cb837.webp

Manticore检索仅需14ms

05 小结

作为Elasticsearch的轻量级替代方案,Manticore Search在搜索性能和SQL支持方面表现突出。通过DBeaver等工具可便捷管理,是构建高效检索系统的理想选择。

相关文章

精彩推荐