Jekyll 搜索方案

简介:Jekyll是一套静态HTML生成工具。文档系统利用Jekyll进行部署,最终将Markdown转换为HTML文件输出。搜索功能的需求是,根据关键字,匹配文档的标题或者内容,列出匹配的文档列表。

1. 方案一: Simple-Jekyll-Search

参考地址:https://github.com/christian-fei/Simple-Jekyll-Search搜索范围:文章标题方案实施:

  • Demo下通过配置参数,生成标题+URL的元数据search.json。
  • 前端利用关键字,匹配search.json中文章标题,显示搜索列表。
  • 优点:后端有simple-jekyll-search可用,前端有jekyll-search.js可用。成本低。缺点:仅能搜索文章标题,即使能搜索Tags和Keywords,也不太够。

    2. 方案二: Searchyll+Elasticsearch

    参考地址:http://allizad.com/2016/05/06/elasticserch-for-jekyll/搜索范围:文章内容方案实施:

  • 本地起一个Elasticsearch服务。
  • 安装Searchyll,在生成静态文件阶段,利用Hook,将完整HTML发送给Elasticsearch。
  • 前端将请求关键字发给Elasticsearch,返回列表显示。
  • 优点:搜索范围广,基本能满足需求。即使文章很多时,搜索性能也不会受太大影响。国外的Jekyll站点,很多使用的是第三方提供的Elasticsearch服务。缺点:需要新增一个服务,有一定的维护成本。

    3. 方案三: 文件入库定制搜索

    搜索范围:文章内容+标题方案实施:

  • Python静态页面入库
  • 前端发送关键字给后端,后端在数据库查询,返回匹配的文章列表
  • 优点:可以定制化搜索。缺点:文档更新频繁,需要同步刷新数据。