问题描述
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
管理界面里面已经能看到文章内容了:
搜索效果
标题包含关键词的会标红,文章内容包含关键字也能搜索到