介绍

  随着博客的文章数量的增加,发现查找一些文章十分的不方便,虽然静态博客的内容都可以在本地用就可以搜索到,但是静态博客也是一个小网站,所以应该要自带一个搜索的功能,hugo官方也推荐了几个好用的搜索工具,工具传送门 但是总是感觉不是自己想要的,因为使用了静态的博客,那么服务器一定是非常的廉价,所以技术选型上需要非常的苛刻,又要可以在廉价机器上跑,又要性能好。大家如果想要体验的话,可以在本网站的导航中点击搜索页面,然后搜索一些关键字看看效果吧。体验地址: https://www.7benshu.com/search/

如果你有丰富的机器资源,那就不要折腾了这个搜索功能了,可以上一些高大尚的技术。

机器配置:

系统: CentOS7.5 64位

硬件: 2 vCPU 512MB

这次内容主要分为了上中下来说介绍

上集:介绍使用的技术和程序设计内容

中集:具体的部署过程和踩过的坑 https://www.7benshu.com/post/2020/08/06-1/

下集:开源此内容的所有代码以及发布 https://www.7benshu.com/post/2020/08/06-2/

内容

  给自己的博客增加一个搜索的功能,不过这次需要自己动手来做,此次使用的一些技术会相对新和冷门点,首先介绍下自己的hugo的部署情况,通过hugo编译成静态的代码,然后通过nginx来托管页面。

  下面介绍下本次的搜索功能技术以及设计思路

解释:

Sonic 》快速,轻便且无架构的搜索后端。在几MB RAM上运行的Elasticsearch的替代方案,用来构建本次搜索功能的底层服务,可以做到关键的语句自动分词等等功能。可以快速的搜索内容

Search 》gin的web框架,是一个golang语言写的框架,可以低成本的提供出sonic的搜索能力。

Github》博客项目的托管地方

SSH 》自己的本地电脑,通过写的脚本来控制hugo的编译和github的上传以及索引的创建。

SearchIndex 》golang写的创建索引的程序,通过对博客内容的提取,写入到sonic中。设计图中会看见有两个线操作这个程序,如果自己的机器配置高,可以直接放在服务器上跑,如果机器配置低,尤其是内存小的,可以在本地跑这个程序,本博客的流程是本地电脑跑的索引创建,因为自己的服务器内存太小了。

用户就可以在搜索的界面上,输入关键字,来快速的浏览搜索结果,并且可以点击内容浏览

总结

  还是很有意思的经历,其中踩了很多的坑,都是因为我的廉价机器带来的,现实就是这个配置,就是要有这个功能,那么只有寻求更加适合的技术和设计,本来弄了几天的rust的语言,发现快速入门的曲线太陡峭了,因为sonic的开发语言是rust的,所以开始还是尝试了几天的。

  不过后来由于不太想花太多的时间搞这个搜索的功能,所以立马就选择了go语言,现在看还是很满意的,毕竟不是简单的访问sonic就好了,还需要提供一个稳定高效的服务,并且一定要简单。

  后面看中集内容,会放出很多的坑和一些感悟,包括一些实际操作的流程和介绍。