Manticore Search 全文检索

目录

    什么是 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 原创,未经许可,谢绝转载。
    相关话题 Manticore Search全文检索搜索引擎

    热门话题

    最新话题