Hexo NexT 魔改系列之二 ── 搜索篇
Next主题本身集成了三种搜索插件:Swiftype,Algolia和本地搜索。
Swiftype只能试用14天,Aloglia好像也开始收费了(更新:社区版免费,但有限制),能有的就只有本地搜索了。
不过好在目前博客的文章还不算多,本地搜索还是可以承受的。
1. 启用本地搜索
启用本地搜索的方法很简单,先安装hexo-generator-search
。
注意不是hexo-generator-searchdb
,前者来自于wzpan/hexo-generator-search,而后者来自于theme-next/hexo-generator-searchdb。后者已经一年多没有更新了,而前者还在更新,并且增加了仅搜索标题的功能。
1 | yarn install hexo-generator-search |
然后在主题配置文件[1]里,启用本地搜索功能:
1 | # Local search |
然后重新生成页面:
1 | hexo clean |
即可查看更改。
其实如果没有其它的需要的话,到这里就可以了,默认配置就已经足够用了。
也可以在站点配置文件[2]中添加配置:
1 | search: |
path
是生成的搜索文件的路径,默认是search.xml
,也可以使用json格式,改为search.json
。field
是搜索的范围,默认是post
,即只搜索发布的文章,也可以改为page
(搜索页面,即 page 类型的页面,不含发布的文航)或者all
(搜索全部)content
是指是否搜索文章的内容,默认为true
,如果改为false
的话则只搜索标题、说明等头部内容,不搜索文章的正文。
2. 解决能够正常搜索,但无法正常跳转的问题
这样配置完了之后,我发现搜索功能没有问题,但搜索出来的结果没有办法正确跳转。查看了一下生成的search.xml
,发现生成的链接多了一个/
,就像这样:
1 | <link href="//posts/2018-10-24-prime-of-the-form-6k1/"/> |
不过在各个教程中都没有找到相应的解决方法,最后在翻issue的时候发现了一个方法,就是在搜索的时候直接去掉一个/
就好了。
修改localsearch.swig
的源代码:
1 | // var articleUrl = decodeURIComponent(data.url); |
真的是简单粗暴啊。。。
3. 启用Algolia搜索(待更新)
最近发现,Agolia搜索的社区版还是免费的,不过暂时本地搜索已经够用了,就不再折腾搜索功能了,留待以后有时间再折腾吧。
参见主题自带的文档:Algolia 搜索。
参考:
- 搜索服务 - NexT 使用文档