Manticore Search 全文检索

2026-04-09 00:00:01 docs MDMS 3233 字

什么是 Manticore Search

Manticore Search 是一款高性能开源全文检索引擎,支持中文分词,兼容 MySQL 协议。MDMS 集成 Manticore 后,搜索性能可以从"遍历文件"提升到"毫秒级精确匹配"。

MDMS 的搜索有两种模式:未启用 Manticore 时,使用 Go 内置的 JSON 索引遍历搜索(适合千篇以内);启用 Manticore 后,自动切换到全文检索(适合万篇以上),关闭时自动降级回 Go 搜索,不影响任何功能。

环境要求

操作系统: Linux(CentOS 7+ / Ubuntu 20.04+ / Debian 11+)

内存: Manticore 本身占用约 50-100MB,建议服务器总内存不低于 2GB

磁盘: 索引数据大约是原始内容的 30-50%,1 万篇文章大约占用 50-100MB 索引空间

端口: 默认使用 9306(MySQL 协议)和 9308(HTTP API),确保未被占用

安装 Manticore Search

CentOS / AlmaLinux / Rocky Linux

curl -sSL https://repo.manticoresearch.com/manticore-repo.noarch.rpm -o manticore-repo.rpm
rpm -i manticore-repo.rpm
yum install -y manticore manticore-columnar-lib

Ubuntu / Debian

wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
dpkg -i manticore-repo.noarch.deb
apt update
apt install -y manticore manticore-columnar-lib

Docker 方式(可选)

docker run -d \
  --name manticore \
  -p 9306:9306 \
  -p 9308:9308 \
  -v manticore_data:/var/lib/manticore \
  --restart=always \
  manticoresearch/manticore

启动和验证

启动服务

systemctl enable manticoresearch
systemctl start manticoresearch

验证是否运行

systemctl status manticoresearch

看到 active (running) 表示启动成功。

测试连接

mysql -h 127.0.0.1 -P 9306 -e "SHOW STATUS"

能看到一张包含 uptimeversion 等字段的表格,说明 Manticore 运行正常。如果提示 mysql 命令不存在,先安装 MySQL 客户端:

CentOS: yum install -y mysql

Ubuntu: apt install -y mysql-client

注意: 这里只是借用 MySQL 客户端来测试连接,Manticore 本身不是 MySQL,不需要安装 MySQL 服务端。

在 MDMS 后台配置

安装完成并确认运行后,进入 MDMS 后台操作:

第一步: 打开后台左侧菜单「Manticore Search」

第二步: 将「启用 Manticore Search」开关打开

第三步: Host 填写 127.0.0.1(如果 Manticore 和 MDMS 在同一台服务器,保持默认即可)

第四步: Port 填写 9306(Manticore 默认的 MySQL 协议端口)

第五步: 点击「保存配置」

保存成功后,页面会显示连接状态。如果显示绿色"已连接",说明配置正确。

索引管理

全量重建索引

首次启用或内容发生大量变化时,需要全量重建索引。在 Manticore 管理页面点击「全量重建」按钮,系统会扫描所有文章并写入 Manticore 索引。进度会实时显示在页面上。

重建速度大约为每秒 100-200 篇文章,1 万篇文章大约需要 1 分钟。

增量索引

日常使用中不需要手动操作。MDMS 启用了文件监听(fsnotify),当 content/md 目录下的 Markdown 文件发生变化(新增、修改、删除)时,会自动同步到 Manticore 索引。

清空索引

如果需要完全重来,可以点击「清空索引」按钮,清空后再执行一次全量重建即可。

多站点共存

如果同一台服务器上运行了多个 MDMS 实例,它们可以共用同一个 Manticore Search 服务。每个 MDMS 实例使用独立的索引表名(默认为 mms_articles),数据互不干扰。

注意: 如果需要自定义索引表名以避免冲突,可以在源码 handler/manticore.go 中修改 mcTable 常量。未来版本会将此项移入后台配置。

常见问题

保存配置后提示"连接失败"

检查 Manticore 是否在运行: systemctl status manticoresearch

检查端口是否正确: 默认是 9306,不是 3306(3306 是 MySQL)

检查防火墙: firewall-cmd --list-ports 确认 9306 端口未被拦截(本机连接通常不受影响)

搜索结果为空

可能索引还没建立。进入 Manticore 管理页面,检查「已索引文章数」是否为 0,如果是,点击「全量重建」。

Manticore 服务挂了怎么办

MDMS 有自动降级机制。Manticore 不可用时,搜索会自动回退到 Go 内置的 JSON 遍历搜索,前台用户不会感知到异常。修复 Manticore 后搜索会自动恢复。

重启服务器后 Manticore 没有自动启动

执行 systemctl enable manticoresearch 确保设置了开机自启。然后手动启动: systemctl start manticoresearch

服务器内存不足

Manticore 默认配置适合大多数场景。如果服务器内存紧张(低于 1GB),可以编辑 /etc/manticoresearch/manticore.conf,在 searchd 段中降低线程数:

searchd {
    threads = 2
}

修改后重启: systemctl restart manticoresearch

搜索演进路径

MDMS 的搜索系统设计了四个阶段,可以根据数据量逐步升级:

当前阶段: search-index.json 内存全量匹配,适合千篇以内

阶段二: Manticore Search 全文检索,适合万篇以上(本文档所述)

阶段三: SQLite FTS5 全文搜索,零部署单文件方案(规划中)

阶段四: sqlite-vec 向量语义搜索,基于 LLM embedding 的近似最近邻搜索(远期)

来源:快搜原创 / 作者:MDMS / 发布时间:2026-04-09 00:00:01 / Kuaisou MDMS 版权所有
相关话题Manticore Search全文检索搜索引擎