跳到主要内容

Docusaurus 添加 algolia 搜索

· 阅读需 4 分钟

用 algolia 给我的个人站点添加一个搜索功能。

先简单说一下 algolia 的工作原理,它是一个索引服务器和一个爬虫工具组成的。爬虫工具会通过 /sitemap.xml 爬取网站的内容,然后通过 private api 发送到索引服务器。当用户在网页搜索的时候,会通过 public api 想索引服务器请求,索引服务器将文档路径返回完成搜索。

要免费使用这个功能是需要先申请的,个人博客和开源软件文档,都是很轻松通过的,如果是用在商用网站可能就不行了。申请的速度听网上反馈的,还是很快的,我自己记得是 1 天不到的功夫就通过了。不过要记住,爬虫只能爬申请通过的域名,如果换域名就必须重新申请了。

信息

直接看官方文档就可以了,下面主要是我记录下自己踩到的坑,如果卡在哪里,官方的文档也看不出头绪,可以对照下是不是我一样的问题。

在 Docusaurus 部署 algolia 是非常简单的,因为它自带的搜索就是 algolia,所以不需要安装插件。

第一步:在 docusaurus.config.js 添加如下的配置:

export default {
themeConfig: {
algolia: {
appId: "YOUR_APP_ID",
apiKey: "YOUR_SEARCH_API_KEY",
indexName: "YOUR_INDEX_NAME",
},
},
};

appidapikey 都可以在索引面板的右上角头像下拉菜单中找到,indexName 就是你索引项目的名称,在顶部头像行对应的右边可以看到。其他的配置参数都可以默认不写。重启站点后可以看到搜索框了。

第二步:配置爬虫,打开 Algolia 官方的推荐模板 拷贝 Docusaurus v3 的就行,粘贴到爬虫面板的 Editor 界面里面,修改掉模板中 YOUR_ 开头的内容(一定要检查仔细,因为我就看漏了一个搞了半天),api key 记得使用索引服务器上的 private api key。默认的配置没有自动运行,可以添加一下:schedule: "every 1 day at 3:00 am", 时间应该不是北京时间,因为爬取后会发送邮件,选一个自己喜欢的时间最好。设置好后运行一下。

第三步:调整下索引服务器。理论上,到上一步结束已经 OK 了。但是我还是一直搜不到内容。最后发现需要在索引中配置这些分页属性: Attributes for faceting