Hexo博客添加搜索功能
添加本地搜索
用 hexo-generator-searchdb生成索引
1 | npm install hexo-generator-searchdb --save |
们只需在站点配置文件 _config.yml
当中写入如下配置,即可为全站的文档生成索引文件了
1 | search: |
其中说明为
1 | path:表示搜索后生成的文件路径,可以生成xml和json两种格式;将path设置为json推荐 |
说明
这里的path
最好配置为json
类型的,这样就不用再安装插件,一些文章说是配置为search.xml
,但这样是不好的,可能由于文章特殊字符导致的XML无法读取而报错。最好是配置为search.json
,如果配置为search.xml
,需要再安装一个
1 | npm install hexo-generator-json-content --save |
具体可以参考:
Hexo 博客无法搜索的终极解决方法 | 国光 (sqlsec.com)
Hexo本地搜索失效解决办法 · 大专栏 (dazhuanlan.com)
找到当前正在使用的主题的_config.yml
文件,打开进行编辑,找到local_search
,修改enable的值为true,注意是主题的_config.yml
文件,不是Hexo全局的_config.yml
文件,并且注意yml文件的对齐格式,如果空格对不上也是报错的
1 | # 本地搜索 |
打开博客在搜索框中输入内容就可以正常使用了。
配置集成Algolia搜索插件
注册账号
Site Search & Discovery powered by AI | Algolia
也可以直接用Github
授权登录。
- 新建一个Index,记得名称就可以,比如创建一个
hexo-blog-index
的Index - 创建完不用再继续,Settings就在网页的左下角的有一个设置图标,来到【Settings > API Keys】,
- 创建一个API Key,点击【All API Keys > API Keys】,点击【New API Key】。在ACL里面增加
DeleteObject
和CreateObject
的权限,还在Search
的权限 即可,然后下拉选择填上 indices 栏目中的 index name ,选刚才你创建的那个index,其余默认就行。 - 此时将会进入Keys界面
安装依赖
1 | npm install hexo-algolia --save |
在主题配置文件_config.butterfly.yml
中修改以下内容(不同的主题有不同的名称):
1 | algolia_search: |
安装插件配置
1 | npm install hexo-algoliasearch --save |
修改站点配置文件_config.yml
,添加如下代码
1 | algolia: |
要注意的是
applicationID
有的博客写的是appId
,是不对的,应该是applicationID
apiKey
填写API Key页面中的 Search-Only API Key
adminApiKey
填写API Key页面中的 Admin API Key
indexName
填写刚创建的Index的名称,比如hexo-blog-index
fields
有挺多的选项,不过只选上面三个就够了,其它的基本用不到,浪费资源
那刚创建的hexo-blog-index
的API Key有啥用呢,因为这个Key就是要动态使用的
配置环境变量
前往博客根目录,配置一个HEXO_ALGOLIA_INDEXING_KEY
的环境变量
如果是Windows环境临时使用,或者是Linux或者Mac环境,则当前Hexo根目录打开Git
切记,必须是Git,如果Windows安装了Git,则会在目录中有右键->Git Bash Here
的菜单,再依次执行如下命令:
1 | # 【your apiKey】替换为刚才自己创建拥有权限的hexo-blog-index的key,在这用上了 |
如果是Windows环境长期使用,则也配置环境变量中,在系统变量中配置HEXO_ALGOLIA_INDEXING_KEY
的键值
如果是Linux环境升级使用,应该要配置vim ~/.bash_profile
,
可以参考Linux环境变量配置全攻略 - 悠悠i - 博客园 (cnblogs.com)
具体环境变量配置参考机器环境
如果配置正确,则在hexo algolia
后,会有一个生成索引的打印
1 | PS D:\GitHub\Hexo\blog> hexo algolia |
再本地打开,就能看到搜索了
1 | # 清理 |
到此,搜索功能完成。
参考文章
为 Hexo 博客创建本地搜索引擎 | 始终 (liam.page)