本教程环境:Ubuntu 22.04 + Apache 2.4 + MySQL/MariaDB 10.6 + PHP 8.1 + Flarum;root身份
Flarum 本身内置的搜索功能较基础。
为了实现更快、更智能的搜索(全文索引、模糊匹配、排序),社区提供了扩展包 flarum/scout。这个扩展相当于 Laravel Scout 的移植版,它充当 Flarum 与搜索引擎(Meilisearch / Algolia / TNTSearch)的“桥梁”。
选择哪个搜索引擎?
| 项目 | Meilisearch | Algolia | TNTSearch |
| 安装难度 | 简单(一个二进制文件 + systemd) | 无需安装(云端API) | 最简单(PHP本地库) |
| 性能 | 非常快(Rust 编写) | 极快(云端) | 中等(PHP单线程) |
| 成本 | ✅ 免费(自托管) | 💰 收费(免费层有限) | ✅ 免费 |
| 维护 | 本地维护(轻量) | 无需维护 | 无需维护 |
| 中文支持 | 支持 | 🔴 差(不支持中文分词) | 一般 |
| 数据量上限 | 🔵 几百万条没问题 | 云端扩展强 | 🟠 小中型可用 |
| 适合场景 | 自建服务器 / VPS / Docker | 商业、托管需求 | 个人轻量论坛 |
Meilisearch 是一个 开源的高速全文搜索引擎,目标是:“让开发者能够像使用数据库一样简单地构建搜索功能。”
安装 Meilisearch
一键脚本安装 Meilisearch 最新的版本
curl -L https://install.meilisearch.com | sh
把meilisearch移到系统目录
mv ./meilisearch /usr/bin/
运行(启动 meilisearch):
meilisearch
第一次启动一个实例时,Meilisearch 会创建master key,例如:
>> --master-key pJfjJs4LdMGSd21E11nOrZUFQc05dHX5UQrvk4Rtn-s <<
编辑 /etc/systemd/system/meilisearch.service,填入上述master key
[Unit]
Description=Meilisearch
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/meilisearch --http-addr 127.0.0.1:7700 --env production --master-key pJfjJs4LdMGSd21E11nOrZUFQc05dHX5UQrvk4Rtn-s
[Install]
WantedBy=default.target
运行:
systemctl enable meilisearch
systemctl start meilisearch
systemctl status meilisearch
显示正常 active (running) 后,运行:
curl -X GET 'http://localhost:7700/keys' -H 'Authorization: Bearer pJfjJs4LdMGSd21E11nOrZUFQc05dHX5UQrvk4Rtn-s'
在返回的一大串结果中,找到 “name”: “Default Admin API Key”, 下面的 “key” 后面那串就是我们要的`主密钥`
{"name":"Default Admin API Key","description":"Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
"key":"325d40e1379cf238cfc9c2ffbd972da036c5f38ba2586ba05a631f501782245d",
"uid":"0118fe21-5112-4c38-92fb-54529a64a65e","actions":["*"],"indexes":["*"],"expiresAt":null,"createdAt":"2025-10-07T15:37:34.378459214Z","updatedAt":"2025-10-07T15:37:34.378459214Z"},
安装扩展 Scout Search
cd /var/www/html/flarum
sudo -u www-data composer require meilisearch/meilisearch-php
sudo -u www-data composer require clarkwinkelmann/flarum-ext-scout
启用扩展。设置:
1、Driver 选择 Meilisearch
2、Index name prefix (optional) 可以不填。
3、Meilisearch Host 这里使用默认,不用改(除非你改了端口)
4、Meilisearch Key 这里就填写刚才的 key
创建索引
把所有已有的帖子、用户、讨论等内容,批量导入到搜索索引(如 Meilisearch 或 Algolia)中。
php flarum scout:import-all
成功的话会返回已创建多少条内容。