问题描述
Hexo缺少站内搜索功能Hexo自带的tag功能并不能满足搜索需求Archer主题自带的搜索模块不能实现全文检索(详情可以参考相关issue)
Hexo本质上是一个静态页面的渲染工具,而我们的博客部署在Github Page上,没有数据库的操作权限,也就不能像Wordpress那样自身实现站内的高级搜索……然而主题自带的第三方搜索插件又无法检索文章内容……
解决方案
- 利用
Archer封装的第三方插件Algolia实现搜索 - 利用
hexo-algoliasearch实现全文检索
- 为什么不直接用hexo-algoliasearch做搜索
- 因为主题没有封装,裸着搜索很违和,自己封装又好累(x)
Archer主题的algolia设置
Algolia简介
- 官网
- 提供云搜索
- 白嫖用户可上传
10,000条JSON数据 - 白嫖用户每个月可操作共
100,000次(上传、搜索)
注册Algolia
- 直接官网注册即可
- 注册之后会创建一个应用,并得到一些
API Keys,记住这些API Keys,一会需要用到

在Applications中能看到刚刚申请的应用id,API Keys里面有需要的API key

- 注意:不要在任何配置文件中填写
Admin API Key!如果有必要,则使用全局变量的方式替代
修改Hexo根目录的_config.yml
搜索algolia模块,如果没有则自己添加一个:
1 | # searching |
这里的applicationID和appId其实是一个东西,就是刚刚创建的应用的ID,只是我们需要利用两个不同的插件,所以写了两遍。
安装相关插件
在Hexo根目录下执行:
1 | npm install hexo-algolia --save |
修改主题_config.yml
Archer主题自身集成了algolia模块,把主题的_config.yml中的algolia_search模块的false改成true即可
1 | # ========== Search ========== # |
- 注意:需要先安装相关插件再启用
algolia模块,否则在渲染时会缺少js文件导致程序报错。
hexo-algoliasearch相关设置
全部设置可以参考官网
安装模块
hexo-algoliasearch刚刚已经安装过了,就不重复安装了
修改_config.yml
在Hexo根目录的_config.yml文件中添加plugins字段:
1 | plugins: |
参数设置
不要像官网一样把
adminApiKey写进配置文件里!(因为总有人会顺手把配置文件传到Github,比如我)在不填写
adminApiKey的时候,可以通过环境变量的方式认证adminApiKey(Windows用户手动添加PATH即可)1
2
3
4
5export ALGOLIA_ADMIN_API_KEY=xxxxxxxx
# 你的 admin_api_key
export HEXO_ALGOLIA_INDEXING_KEY=xxxxxxx
# 你的Search-Only API Key
PS:Search-Only API Key其实就是配置文件中的apiKey,但是有时候hexo-algoliasearch模块莫名其妙找不到这个Search-Only API Key,可以通过上面的操作解决。
更新Algolia
如果你不是WSL用户,这时直接hexo aloglia即可。
如果是WSL用户,则需要检查一下环境变量有没有被覆盖……最懒的办法就是每次都添加一遍(不是)
1 | export ALGOLIA_ADMIN_API_KEY=xxxxxxxx |

此时在Algolia管理界面里面已经能看到文章内容了:

搜索效果

标题包含关键词的会标红,文章内容包含关键字也能搜索到