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