感谢柚子童鞋在杜老师的疯狂怂恿下为 Volantis 主题整合了 MeiliSearch 搜索引擎,并花费大量心思编写了相关教程,反正杜老师照着柚子童鞋的教程没做出来,不过在柚子童鞋的耐心帮助下最后还是成功实现了,这里记录下部署过程中可能遇到的坑。
历史背景
杜老师的博客再水,也将近 300 万字,检索文件 content.json 大小 1.42MB「还是调整后的,原有的超过 4M」
当有小伙伴使用搜索功能时,需完整加载 content.json 文件才可显示搜索结果,不仅影响体验还会产生较大流量。
之后换成了 Algolia 服务,但其最近节点位于香港,大陆访问速度较慢,且有 API 调用数限制。
在百度上疯狂谷歌之后,发现一款可自建的开源搜索引擎,就是 MeiliSearch 了。
杜老师第一时间推给了柚子童鞋,对方回复能搞!
再次感谢柚子童鞋,很快写好了教程并推送调用代码至 Volantis 主题库中。
服务搭建
杜老师是忠实的容器党,能用 Docker 的绝不考虑其它部署方法,以下是官方的部署命令,其中 MASTER_KEY
自定义,版本号 v0.28
可换成 latest
:
1 | docker run -it --rm \ |
如果想用某塔 Docker 管理器部署,配置如图。但墙裂建议使用命令行部署,杜老师尝试用 Docker 管理器部署几次失败,最后定位问题属于玄学:
获取密钥
部署完成后通过 IP:7700
,如能看到下图页面说明部署成功:
这页面好看吧,然而没啥卵用!官方建议使用 Postman 调试 MeiliSearch,并提供了调试文件,点击 这里 跳转至 Postman 页面,复制官方调试文件链接 https://docs.meilisearch.com/postman/meilisearch-collection.json
到 Link 标签项,导入即可:
将上文的 MASTER_KEY
填入 Token 框中:
切换至 Variables,将 url 处替换为 MeiliSearch 的域名,indexUID 建议使用 hexo
,记得点击右上方 Save:
展开 MeiliSearch 进入 Key Management-Get keys,点击右侧 Send 即可获取 searchKey:
如若长期使用,建议使用生产模式部署,停用上面的实例后,使用下面命令重新部署:
1 | docker run -d --restart=always \ |
调试使用
为保证每篇文章拥有一个唯一值,推荐用 hexo-uuid 插件,进入到博客目录后使用如下命令按照:
1 | npm install hexo-uuid |
安装完后,需要 blog/_config.yml 配置文件为如下内容:
1 | jsonContent: |
使用如下命令完成检索文件推送:
1 | curl -X POST 'https://yoursdomain.com/indexes/hexo/documents/?primaryKey=uuid' \ |
参考下面代码修改主题配置文件即可:
1 | search: |
注意事项
杜老师在推送检索文件时遇到了全量推送问题,表现为搜索时出现大量重复结果,杜老师选择了最简单粗暴的解决方法,上传前调用删除接口清空数据库:
1 | curl -X DELETE 'https://m.dusays.com/indexes/hexo' -H "Authorization: Bearer MASTER_KEY" |
最后分享下杜老师的 GitHub Actions 配置文件:
1 | name: CI |
条评论