oCodeHoney's BLOG

【BLOG】HEXO+archer站内搜索的启用方法

字数统计: 873阅读时长: 3 min
2020/03/10 Share

今天感觉应该还是要做一下站内搜索,这样以后要查阅相关博文会更方便,结果一搞就是一个下午,其实解决起来也就是几分钟,但是找这个解决方法找了三个小时,心累啊。因为我用的是archer主题,所以还是基于这个主题来写。

参考

实现方法

注册Alogolia用户

注册Algolia用户,可以直接用github账号登录,注册后的 14 天内拥有所有功能(包括收费类别的)。之后若未续费会自动降级为免费账户,免费账户总共有10,000条记录,每月有100,000的可以操作数。

注册完毕后点击Create a new index创建一个新的index,名字自己随便取,但是要记住后面有用。

安装Algolia

在站点根目录下使用git bush输入如下命令安装Hexo Algolia扩展,这个扩展的功能是搜集站点的内容并通过API发送给Algolia。

npm install --save hexo-algolia

获取API KEY

打开Algolia官网点击DASHBOARD,在左侧列表中进入API keys界面,得到三个重要的值,即 ApplicationID、Search-Only API Key、 Admin API Key,后面会用到。

注意!!!接下来是一个大坑,不知道是不是官网改版的原因,很多原有的教程在这步都不适用了,点击All API Keys,再点击New API Key,在弹出框中重点填写如下内容(没有说明的就不用填写不用改)

Description 随便写

Indices 填写你刚才创建的index的名称

Validity 填0就可以

ACL(重点) 选中 search addObject deleteObject listIndexes deleteIndex共五个

填写完后点击create,后面用的全部都是这个Key!!!重要!!!

然后在博客根目录下的_config文件中加入以下字段

1
2
3
4
5
algolia:
applicationID: 'your applicationID' //Your API Keys下的第一个
apiKey: 'your apiKey' //注意!输入刚刚创建的API Key
indexName: 'your apiKey name' //你创建的index名字
chunkSize: 5000 //不用改

更新index

到根目录下,用git bush输入以下命令

export HEXO_ALGOLIA_INDEXING_KEY=你创建的那个API Key

hexo algolia

主题集成

在archer主题目录下的_config文件中修改以下字段(注意:目前有一个小bug,不能在hits_emptyhits_stats中写入单引号,否则会报错)

1
2
3
4
5
6
7
8
algolia_search:
enable: true
hits:
per_page: 10
labels:
input_placeholder: Search for Posts
hits_empty: "We did not find any results for the search: ${query}"
hits_stats: "${hits} results found in ${time} ms"

主要就是把false改成true,per_page应该是每页显示数(没有改),hits_emptyhits_stats就是没有符合搜索结果和有符合搜索结果的提示,可自行修改。

域名修改

这一步是网上大部分教程所没有的,也是今天耽误了大量时间的元凶,主要是针对搜索已经部署成功,并且可以搜索内容,但是点开博文时跳出的不是相应的博文而是yoursites404的情况。

在博客根目录下的_config文件中找到url作如下修改

url: 你的网站主页网址,如https://xxxx.github.io/

修改完成后输入如下命令更新

hexo algolia

即可成功打开相应博文,这样站内搜索就完全启用成功了。

后面每次上传完新的博文后也要再次输入上面这条命令来更新上传数据到Algolia来实现正常搜索。


Author:oCodeHoney

Date:2020-3-10


CATALOG
  1. 1. 参考
  2. 2. 实现方法
    1. 2.1. 注册Alogolia用户
    2. 2.2. 安装Algolia
    3. 2.3. 获取API KEY
    4. 2.4. 更新index
    5. 2.5. 主题集成
    6. 2.6. 域名修改