Algolia是一个高效的在线搜索引擎。可以通过搜索引擎Algolia实现 hexo 站内的高效检索。

创建 Algolia Index

1.注册登录Algolia

2.创建 Index

image-20221229204241659

如果没有命名,要先进入应用管理重命名,建议和创建Index时用同一个名字。

image-20221229204845628

配置 Hexo

安装插件:

1
npm install hexo-algolia --save

进入应用管理选择刚刚创建的 Index,然后进入API Keys

image-20221229204529738

修改_config.yml,插入以下配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
algolia:
applicationID: 'your Application ID'
apiKey: 'your Search-Only API Key'
adminApiKey: 'your Admin API Key'
indexName: 'your indexName'
chunkSize: 5000
appId: "your Application ID"
fields:
- content:strip:truncate,0,500
- excerpt:strip
- gallery
- permalink
- photos
- slug
- tags
- title

applicationIDappId是网页上的Application ID

apiKey是网页上的Search-Only API Key

adminApiKey是网页上的Admin API Key

indexName是创建Index时输入的名称

部署

本地

需要配置一个名称为 HEXO_ALGOLIA_INDEXING_KEY,内容为 Algolia 网页中 Search-Only API Key 的环境变量

1
export HEXO_ALGOLIA_INDEXING_KEY=your Search-Only API Key

Windows:

添加系统环境变量

Win + R 运行 'sysdm.cpl'—>高级—>环境变量—>系统变量—>新建

image-20221229211859552

然后运行:

1
hexo algolia
Github Actions

在GitHub自动化部署文件中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
jobs:
deploy:
+ env:
+ HEXO_ALGOLIA_INDEXING_KEY: your Search-Only API Key
runs-on: ubuntu-latest
steps:
- name: 检查分支
...
- name: 生成静态文件
run: |
hexo clean
hexo generate
+ hexo algolia

HEXO_ALGOLIA_INDEXING_KEY替换为你的Search-Only API Key

此时再打开Algolia,就可以看到索引数据发送到了 Algolia 的 Index 中

image-20221229212735713

配置主题

修改主题配置文件(_config.butterfly.yml)打开Algolia搜索,如果有其它搜索引擎要关闭。

1
2
3
4
5
# Algolia search
algolia_search:
enable: true
hits:
per_page: 6

修改[Blogroot]\themes\butterfly\source\js\search\algolia.js

1
2
3
4
5
6
7
8
9
  const searchBox = instantsearch.widgets.searchBox({
container: '#algolia-search-input',
showReset: false,
showSubmit: false,
+ searchOnEnterKeyPressOnly: true,
- placeholder: GLOBAL_CONFIG.algolia.languages.input_placeholder,
+ placeholder: "输入关键词后,按下回车键即可搜索文章..."
showLoadingIndicator: true
})

重新部署

重新执行Hexo三件套就可以看到效果了

1
2
3
hexo clean
hexo g
hexo d