给jekyll添加静态搜索
in 工匠篇 with 0 comment and 886 views

给jekyll添加静态搜索

in 工匠篇 with 0 comment

使用jekyll在github上搭建博客之后,无论是从写作的舒适度还是维护的方便程度上来讲都比之前有了很大的提升,不过一直觉得美中不足的是缺少一个搜索功能。由于整个博客都是静态的,因此很难做到像WordPress那种使用数据库来提供强大的搜索功能。不过退而求其次,给jekyll添加静态搜索,实现基本的功能还是有可能的。

通过在Google搜索一番之后,发现了jekyll-lun-js-search这个插件,可以实现jekyll的静态搜索。话不多说,按照说明文件中的步骤开始动手配置。

配置完成,满怀期待在搜索框输入了一个单词,结果。。。是的,没有任何反应。

重新检查确认配置无误之后继续在网上寻找是不是有人也遇到类似的问题。果然有一个教程里提到这个插件有一些bug。窃喜,一一修改。结果。。。是的,依旧没有任何反应。

无耐操刀自己上,在又修改了几处代码中的bug之后还是未能配置成功。此时距当初发现这个插件已经过去了六七个小时。

这时只好修改思路,通过去找一些添加了搜索功能的jekyll博客,然后查看他的代码实现。果然发现了另外一个,而且这个插件使用非常简单,也无需配置那么多的文件,即Simple-Jekyll-Search

由于两个插件都提供了很详细的配置说明,我这里就不再重复。

从实现的角度来说,静态搜索的大概思路都是提取文章html页面的关键内容,保存在一个文件中,然后通过遍历这个文件来返回搜索结果。但这两个插件在具体实现时还有所不同。jekyll-lun-js-search这款插件是通过一段ruby代码来生成保存有文章页面关键内容的文件。由于是通过ruby代码提取,因此这个文件的内容比较丰富,可以包含博客文章的正文,也就是说实现了全文搜索。但是Simple-Jekyll-Search这款插件是通过简单的jekyll语法来提取内容,因此在这个文件中无法包含文章正文,因为通过jekyll语法提取的博客正文会包含html代码。所以简单配置的背后,带来的是对全文搜索的舍弃。

另外,在调试第一个插件的过程时,虽然最后仍旧没有解决这个问题,而且我自己也不知道原因所在,但还是对jekyll的工作细节有了更多的了解,也知道了config文件中【安全】选项所代表的具体含义,第一次接触并修改了ruby代码。。等等。感觉收获还是很大的。

额。。。好吧,我成功的把一篇技术文写成了流水账。

「一键投喂 肥宅快乐水🥤!」

Xiaolei.Tech

谢谢老板,老板大气~

使用微信扫描二维码完成支付

Responses