这里开始使用Algolia搜索,本地搜索功能遇到了奇怪的BUG,无法修复,正好也给了理由去部署Algolia搜索使用,这里记录一下部署过程和需要使用的命令,以免忘记还需要查询。

Algolia 注册

前往 Algolia,新建 应用 并创建一个index(命名随意,index是自己生成的)。

数据中心这里建议选择新加坡香港,也可以根据自己的情况来选择。

安装 Algolia 插件

1
2
npm install hexo-algolia --save
npm install hexo-algoliasearch --save

分别是 hexo-algoliahexo-algoliasearch,在GitHubmarkdown上有介绍,这里说一个大概意思。

这里的意思是,如果你想用全站搜索你可以用前者,如果你想搜索文章两种都可以一起使用 ,这里我感觉用 hexo-algoliasearch 就够了,如果你想一起用也可以的。

Algolia 获取配置

得到了appIdapiKeyadminApiKey这三个参数,可在 API Keys 中获取的得到,注意保管好你的 Admin Key,这里不建议直接写在配置文件中

修改和配置文件

修改博客根目录的配置文件 _config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
algolia:
appId: "xxxxxxxxx"
apiKey: "xxxxxxxxxxx"
adminApiKey: "xxxxxxxxxxxxxx"
chunkSize: 5000
indexName: "my-hexo-blog"
fields:
- content:strip:truncate,0,500
- excerpt:strip
- gallery
- permalink
- photos
- slug
- tags
- title

修改主题目录下的配置文件(这里给小白说一下,只能用一个搜索功能,两个一起开会报错)。

1
2
3
4
5
6
7
8
9
10
11
# Algolia search
algolia_search:
enable: true
hits:
per_page: 6

# Local search
local_search:
enable: false
preload: true
CDN:

操作和添加环境变量

这里说明一下WindowsLinuxcmd操作指令

1
2
3
4
5
6
7
# Windows
## 微软的 powershell
$env:ALGOLIA_ADMIN_API_KEY = ""

# Linux
## sh/bash
export ALGOLIA_ADMIN_API_KEY=

这里为了方便操作,直接添加变量,可以让你的执行速度提升,主要的是可以简单高效,不需要一直输入指令,直接一个 hexo algolia即可。

hexo-algolia 插件环境变量名称为HEXO_ALGOLIA_INDEXING_KEY环境变量,值为 AlgoliaAdmin API Key。这里需要注意的是,Admin API Key 是一个非常重要的密钥,不应该将其暴露在公开的仓库中,因此需要将其添加到环境变量中,而不是直接写在配置文件中。

GitHub Actions 配置

如果你有配置过 GitHub Actions自动部署,可以在工作流中添加对应步骤和环境变量,记得在Secrets 中添加变量(这里为了隐私性和安全性,在你GitHub仓库下部署详情请看这篇文章使用 Github Action 自动部署)。

1
2
3
4
5
6
7
8
9
10
11
12
13
jobs:
deploy:
name: Deploy Hexo Public To Pages
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai
ALGOLIA_ADMIN_API_KEY: ${{ secrets.ALGOLIA_ADMIN_API_KEY }}

## 或者

export ALGOLIA_ADMIN_API_KEY=…
export HEXO_ALGOLIA_INDEXING_KEY=…

使用命令

1
2
3
4
5
6
hexo algolia
而在这之前还需要hexo g生成文件
所以具体使用命令就是
hexo cl && hexo g && hexo algolia
或者在未安装 HEXO CLI 的情况下使用以下命令
npm run clean && npm run build && hexo algolia -n && gulp

可选配置

是否删除之前建立好的索引重新建立索引?

1
2
3
hexo algolia -n
或者
hexo algolia --no-clear

注意查看命令行输出的信息,然后去Algolia官网检查索引是否生成。