hexo增加搜索功能
hexo版本5.0.2 npm版本6.14.7 next版本7.8.0
作为一个博客,没有搜索功能,如何在大批文章中找到自己想要的,那在hexo中如何增加搜索功能呢?
1 | search: |
在博客目录下安装npm install hexo-generator-search --save
,此时使用hexo cl && hexo g
就会在博客public目录下生成一个search.json,在使用hexo d
部署上去搜索就可以用了
本地搜索弊端
前期还好,后来随着我的文章越来越多,search.json文件已经达到了十几M,每次加载页面都需要花费几分钟来加载search.json文件,使用体验很不好
algolia搜索
本地搜索走不通,那就只能使用远程搜索了,还好hexo提供了algolia搜索
先去官网登录一下,这里我使用的是Github登录,然后新建一个Index
创建Index后,右上角头像处点击选择Settings
查看ApiKeys
在_config.yml
中配置algolia
1 | algolia: |
还需要在环境变量中配置HEXO_ALGOLIA_INDEXING_KEY 值为 页面中Admin API Key的值
在博客目录下安装npm install hexo-algolia --save
之后修改使用的主题下(我使用的是next主题)的_config.yml
,配置使用algolia搜索
1 | algolia_search: |
此时执行hexo algolia
就会将博客生成的search发送到algolia中,而部署的博客就可以搜索到所上传的内容
这里有一个小问题,在执行
hexo algolia
时,algolia会多条合并进行提交,而免费的algolia会有大小的限制,可以看到超过10000字节就不行了,algolia默认会50条合并提交,可以设置几条进行合并使用chunkSize来设置条数,如
hexo algolia --chunkSize 10
就是10条合并
每次都指定参数还是挺麻烦的,看一下algolia中是怎么写的吧。
发现在node_modules/hexo-algolia/lib/command.js中有一个默认配置
1 | var CONSOLE_DEFAULTS = { |
设置的chunkSize是50,我由于正文内容比较多,改成了3,这样就不需要每次都带参数了