文章搜索功能
2018年05月03日

概述

这两天在折腾文章搜索功能,想添加这个功能已经很久了,就在刚刚终于完成了功能实现,然而有几个问题一直没有纠结,就没耐心研究.

  1. 全部文章检索的实现方式
    最方便的实现莫过于数据库,selelct * from articles where title like '%keyword%' or content like '%keyword%'; (在写这段博客的时候,就能撸出这条sql),可见实现上是多么的简单.
    然而由于以前提到,web的实现终究是个展示平台,(全文搜索vim里有rgrep插件),在以markdown文件集合为数据源的前提下,文件递归遍历就成了最终的选择.
  2. 执行效率
    作为搜索,每次都要遍历很多文件,想想sql对搜索还进行了缓存优化,而文件操作并没有这种黑科技,真的有点麻爪.后来顺手du -sh articles看了下文章集合一共多大,不到3M.感觉有点杞人忧天了,文件在100多个,即便在init时,文件都写入内存,空间使用也很有限(由于考虑到以后迁移到别的vps,配置有多低,所以放弃了改写内存的实现).
  3. 请求响应的频次
    搜索自然是需要遍历全部文章进行过滤.而最开始的首页列表实现,是在每次获取一个节点以后,再根据索引获取下一个,然后按照这个模式我就钻进牛角尖了.其实不然,可以在第一次发起搜索请求时,检索所有匹配的索引集合,后边只要遍历这个集合就可以了.想到这个方法,后边的操作就水到渠成了,顺带连以前遇到的fetch函数重构问题也解决了.

零星的还有一些ajaxpopstate问题,稍带也解决了,心情大好!