MeiliSearch 装了三遍我才搞对,分享下踩过的坑
先说结论
中小博客 / 论坛做站内搜索,MeiliSearch 比 ES 友好太多 —— 但第一次装的人 80% 会踩这三个坑。我装了三遍,前两遍各栽了一次,第三遍才稳住。
坑 1:默认绑 0.0.0.0,公网直接裸奔
包安装完默认监听 0.0.0.0:7700,没有设 master key 时所有 API 不要鉴权。我第一次装完没改 systemd 配置,第二天就被人写入了 1500 条垃圾文档。
正确做法:
# /etc/systemd/system/meilisearch.service
Environment="MEILI_HTTP_ADDR=127.0.0.1:7700"
Environment="MEILI_MASTER_KEY=<32 位以上随机串>"
再用 nginx 反代 + Basic Auth / IP 白名单。永远不要让 7700 端口直接对公网。
坑 2:dump 是冷启动的,不是增量同步的
Meili 的 dump / snapshot 是全量的,不是 ES 那种 binlog 持续同步。别想着用 dump 做主从,做不了。每天 cron 一次冷备 + 业务侧 hook 双写就够了:
// ForumPost::afterSave
Yii::$app->meilisearch->indexForumPost($this);
坑 3:中文分词比想象的好
之前用过 ES 的 IK 分词,调一堆词典;Meili 的中文分词直接装就能用,准确率 80% 以上。剩下的 20% 用 synonyms(近义词)和 stopWords(停用词)配置一下就行。
性能数据
本站现在索引 200 条左右帖子 + 200 条回复,平均查询 < 5ms。1.4 GB RAM 服务器吃 35M 内存。
你们的站内搜索用什么? ES、Meili、Algolia 还是直接 LIKE %x%?