为Jekyll+GitHub Pages添加全文搜索功能

简介: 为Jekyll+GitHub Pages添加全文搜索功能,期间遇到的关于中文字符的问题与解决。

2019_04_08_gh_

动态演示如下:
2019_04_08_gh_

源码库: program-in-chinese/team_website

找到此JS工具: christian-fei/Simple-Jekyll-Search, 按安装说明先完成了对题目/类别/日期的搜索, 本地运行不错. 再接再厉添加了对描述和全文(post.content)的搜索, 详见全文索引.json

发现生成的json文件中, 特殊字符如引号使得json语法出错:
2019_04_08_invalidJSON

发现前人对同样问题的解决方法"full-text search" donot work! · Issue #63 · christian-fei/Simple-Jekyll-Search, 另参考christian-fei/Simple-Jekyll-Search, 在_plugins下添加脚本特殊字符过滤.rb:

module Jekyll
  module C字符过滤器
    def remove_chars_cn(输入)
      输入.gsub! '\\','\'
      输入.gsub! /\t/, '    '
      输入.gsub! '@',''
      输入.gsub! '$',''
      输入.gsub! '%',''
      输入.gsub! '&',''
      输入.gsub! '"',''
      输入.gsub! '{',''
      输入.gsub! '}',''
      输入
    end
  end
end

Liquid::Template.register_filter(Jekyll::C字符过滤器)

module名称如果没有大写字母开头, 报语法错误如下, 猜测原因与Scala疑似中文命名问题后续类似, 不过Ruby好像将中文字符认作了非大写的:

特殊字符过滤.rb:2: class/module name must be CONSTANT (SyntaxError)

方法remove_chars_cn未能中文, 由于Jekyll的Liquid脚本语言貌似不支持Unicode标识符, 会报错:

Liquid Warning: Liquid syntax error (line 6): Unexpected character 删 in "{{ post.description | strip_html | strip_newlines | 删除特殊字符 }}" in 全文索引.json

在本地运行通过后, 将包括插件在内的修改提交到GitHub后, 发现网站加载json文件时报错"invalid JSON", 查看取json的请求响应内容后, 各种尝试后初步认定是插件未成功运行, 一通搜之后发现, GitHub Pages不支持任意插件的运行: jekyll plugin not work on github

解决方法就是本地jekyll生成网站源码后, 将网站源码提交到repo里.

参考Configuration Options_config.yml中将输出目录改为docs:

destination: docs

再将原本的jekyll文件都移到repo根下, 运行生成后提交, 搞定.

相关文章
|
7月前
|
自然语言处理 搜索推荐 开发者
GitHub Copilot Enterprise三大创新功能
【2月更文挑战第9天】GitHub Copilot Enterprise三大创新功能
152 4
GitHub Copilot Enterprise三大创新功能
|
7月前
|
Shell 网络安全 开发工具
Github Pages + Jekyll 独立博客一小时快速搭建&上线指南
Github Pages + Jekyll 独立博客一小时快速搭建&上线指南
|
2月前
|
JSON 缓存 JavaScript
使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)
使用 jsDelivr 加速 GitHub Pages 的图片资源和动态编译的 JSON 资源。
37 2
|
2月前
为什么 GitHub Pages 的文章标题不能以 @ 开头?
本文记录了一个 GitHub Pages 博客网页上文章标题以 `@` 开头导致的问题,并分析了原因,提供了解决方法。
46 0
|
4月前
|
CDN
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
这篇文章介绍了几种加速访问GitHub的方法,包括使用镜像网站、代理网站下载、利用CDN加速以及转入Gitee平台进行加速。作者建议,对于较大的项目推荐使用代理网站或Gitee下载,而对于较小的项目,使用CDN加速即可满足需求。
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
|
3月前
|
消息中间件 Kafka Go
使用github.com/IBM/sarama 编写消费kafka的功能
使用github.com/IBM/sarama 编写消费kafka的功能
|
4月前
GitHub——使用GitHub Pages生成在线文档
GitHub——使用GitHub Pages生成在线文档
32 0
|
6月前
|
JavaScript 应用服务中间件 程序员
技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客
技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客
|
7月前
|
存储
github pages 部署单页面
github pages 部署单页面
126 0
|
7月前
|
缓存 网络协议 CDN
Docsify 配合 Github Pages 搭建一个自己的云笔记
Docsify 配合 Github Pages 搭建一个自己的云笔记
220 0