背景
前期在搭建Hexo过程中,因为有很多前期hexo知识点学习和实践,故一直遗留了一个搜索功能。目前博客已写了小几十篇文章,决定集成搜索功能,更方便查找博文!
搜索介绍
next主题自带Algolia Search和Local search,网上查询还有Swiftype和微搜索,但没去仔细了解后者两款,并且Algolia Search和Swiftype都是要收费的。
Local search是本地搜索即站内文章搜索,配置简单方便,依赖wzpan/hexo-generator-search,插件安装名是hexo-generator-searchdb,原理是通过hexo-generator-search插件在本地生成一个search.xml文件,搜索的时候从这个文件中根据关键字检索出相应的链接
。据网上说Local search在文章量大时,搜索效率会变慢,刚开始用还不了解,可以先使用着。效果见文末
Algolia Search刚开始不太了解,是一个三方的插件,next主题也内嵌了。网上查阅,需要去Algolia官网注册账户,并取得appId和key,才可以进行配置和使用,且有博客使用Algolia后,搜索只显示文章标题,不显示搜出来的文章内容,但是有人说Algolia在文章大量时效率高。
故暂时不采用Algolia,等后期看Local search的性能再考虑替换;
此处先附上参考文章
蓝胖纸 Hexo+Next集成Algolia搜索
大专栏 hexo添加algolia搜索
Local search使用步骤
原理
通过hexo-generator-search插件在本地生成一个search.xml文件,搜索的时候从这个文件中根据关键字检索出相应的链接
search文件支持json和xml两种格式输出。
安装plugin
1 | npm install hexo-generator-searchdb --save |
next主题配置文件
开启Local search
1 | local_search: |
站点配置文件
默认开启content搜索和显示
1 | # 站内文章搜索功能 |
应用
因为修改了主题配置,需要先clean,再预览hexo clean && hexo s -g
首页菜单栏生成一个搜索🔍
菜单,点击搜索,输入想要查找的内容,即可自动查出包含输入文本的文章。
以后快速找写过的内容,很方便吧~~
加密文章不可搜索
Search不可搜索加密的文章内容,但是加密文章的标题不受限制,可以搜索。因为tag private加密的文章,是对内容执行加密处理的,而Search是对包含渲染加密后的所有文章进行文本搜索的。
搜索效果

Fixed bug
Issue:点击搜索🔍,一直加载loading框,无法搜索内容。
网上查询,有很多人遇到加载loading的现象,但是原因各不相同,肯定是程序运行时哪个配置出了问题。
调查方法:打开chrome开发者工具,看后台报错日志。日志没记下来,大概是Algolia Invalid error。
原因:起初调试Local search和Algolia Search时,两个开关enable都设置了true,后来npm安装了Local search plugin,但没有安装Algolia Search plugin,实际是我没有用Algolia Search,但开启了Algolia Search。
解决:关闭Algolia Search,enable设置false,重新hexo预览解决。