4.4 KiB
Algolia 搜索
NexT 内部提供 Algolia 的搜索功能,要使用此功能请确保所使用的 NexT 版本在 v5.1.0
之后。需要注意的是,仅仅将 next/_config.yml
中 algolia_search
的 enable
打开并不能让你使用 Algolia 搜索,你还需要使用对应的 Hexo-Algolia 插件 才能真正在博客页面中使用 Algolia 搜索。按照下面介绍的步骤操作即可完成 Algolia 搜索的安装。
-
前往 Algolia 注册页面,注册一个新账户。 可以使用 GitHub 或者 Google 账户直接登录,注册后的 14 天内拥有所有功能(包括收费类别的)。之后若未续费会自动降级为免费账户,免费账户 总共有 10,000 条记录,每月有 100,000 的可以操作数。注册完成后,创建一个新的 Index,这个 Index 将在后面使用。
-
Index 创建完成后,此时这个 Index 里未包含任何数据。接下来需要安装 Hexo Algolia 扩展,这个扩展的功能是搜集站点的内容并通过 API 发送给 Algolia。前往站点根目录,执行命令安装:
$ cd hexo $ npm install --save hexo-algolia
-
在
API Keys
页面找到需要使用的一些配置的值,包括ApplicationID
和Search-Only API Key
。注意,Admin API Key
需要保密保存,不要外泄。 -
在
API Keys
页面,点击ALL API KEYS
找到新建 INDEX 对应的 key,编辑权限,在弹出框中找到 ACL ,勾选 Add records、 Delete records、List indices、Delete index 权限,点击update
更新。 -
编辑
站点配置文件
,新增以下配置,除了chunkSize
字段,替换成在 Algolia 获取到的值:algolia: applicationID: 'applicationID' apiKey: 'apiKey' indexName: 'indexName' chunkSize: 5000
-
当配置完成,在站点根目录下执行一下命令来更新上传 Index。请注意观察命令的输出。
$ export HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # 使用 Git Bash # set HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # 使用 Windows CMD 命令行 $ hexo clean $ hexo algolia
-
切换到 NexT 目录,并安装 algolia-instant-search 到
source/lib
目录。$ cd themes/next $ git clone https://github.com/theme-next/theme-next-algolia-instant-search source/lib/algolia-instant-search
如果你想直接使用 CDN 设置 Algolia Search,则需要在
主题配置文件
中添加 vendors 字段:vendors: ... # Internal version: 1 # https://www.algolia.com algolia_instant_js: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.js algolia_instant_css: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.min.css ...
-
更改
主题配置文件
,找到 Algolia Search 配置部分,将enable
改为true
。同时你需要关闭其他搜索插件,如 Local Search 等。你也可以根据需要调整labels
中的文本:# Algolia Search algolia_search: enable: true hits: per_page: 10 labels: input_placeholder: Search for Posts hits_empty: "We didn't find any results for the search: ${query}" hits_stats: "${hits} results found in ${time} ms"
已知的问题
- 考虑到 Algolia 免费账户的限制,目前 Hexo-Algolia 插件最新版本去掉了正文索引功能。
- Hexo-Algoliasearch 插件提供了正文索引功能,不过需要替换 NEXT 主题中的关键字。对于免费账户,
Record Too Big
的问题同样存在。- 替换
source/js/algolia-search.js
中所有的applicationID
为appId
- 替换
layout/_partials/head/head.swig
中所有的applicationID
为appId
- 替换