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

动态演示如下:
[上传失败, 请自行搜索原文]
源码库: program-in-chinese/team_website
找到此JS工具: christian-fei/Simple-Jekyll-Search, 按安装说明先完成了对题目/类别/日期的搜索, 本地运行不错. 再接再厉添加了对描述和全文(post.content)的搜索, 详见全文索引.json
发现生成的json文件中, 特殊字符如引号使得json语法出错:

发现前人对同样问题的解决方法"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根下, 运行生成后提交, 搞定.
为Jekyll+GitHub Pages添加全文搜索功能的更多相关文章
- 为添加了自定义域名的GitHub Pages添加SSL,启用强制HTTPS(小绿锁)
直奔主题 为什么要使用https协议? 提高网站访问安全性,网络连接都是加密的 (PS:虽然SSL并不是无懈可击的,但是我们应该尽可能提高窃听成本). 目前越来越多的浏览器会判断当前站点支不支持htt ...
- 【一】Ubuntu14.04+Jekyll+Github Pages搭建静态博客
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- Postgres全文搜索功能
当构建一个Web应用时,经常被要求加上搜索功能.其实有时候我们也不知道我要搜索个啥,反正就是要有这个功能.搜索确实很重要的特性,这也是为什么像Elasticsearch和Solr这样基于Lucene的 ...
- 使用Jekyll + GitHub Pages免费搭建个人博客
使用Jekyll + GitHub Pages免费搭建个人博客 My Blog:无名の辈 | VectorX (vectorxxxx.github.io) Download Ruby:Download ...
- 使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示.数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步.这里用到的开源服务就是Elas ...
- 如何在Web前端实现CAD图文字全文搜索功能之技术分享
现状 在CAD看图过程中我们经常会需要用到查找文字的功能,在AutoCAD软件查找一个文字时,可以通过打开左下角输入命令find,输入查找的文字,然后设置查找范围,就可以搜索到需要查询的文字.但在We ...
- 使用 jekyll + github pages 搭建个人博客
1. 新建 github.io 项目 其实 github pages 有两个用途,大家可以在官方网页看到.其中一个是作为个人/组织的主页(每个账号只能有一个),另一个是作为 github 项目的项目主 ...
- Jekyll+GitHub Pages部署自己的静态Blog
混了这么久,一直想拥有自己的博客,通过jekyll和GitHub Pages捣腾出了自己的博客(https://www.ichochy.com) 一.安装jekyll 首先有安装Ruby的开发环境 运 ...
- GoldenDict词典的超级实用高级玩法----全文搜索功能
快捷键: Ctrl+Shift+F 菜单进入:搜索--全文搜索 模式:正则表达式 比如:我想知道地道的英文表达 请xx天/周/年假 给搜索框写入正则表达式 请(.)(天|周|年)假 就可以了 ...
随机推荐
- 基于Unity的AR开发初探:第一个AR应用程序
记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到.目前公司有一个App开发的需求,想要融合一下AR到A ...
- Python猫荐书系列:文也深度学习,理也深度学习
最近出了两件大新闻,相信大家可能有所耳闻. 我来当个播报员,给大家转述一下: 1.中国队在第 11 界罗马尼亚数学大师赛(RMM)中无缘金牌.该项赛事是三大国际赛事之一,被誉为中学奥数的最高难度.其中 ...
- .net core 杂记:日记记录
ASP.NET Core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件. 以下为Nlog和log4net的使用记录 Nlog使用 ...
- rsync命令详解、rsync用ssh隧道方式同步
● rsync格式安装命令 yum install -y rsync与scp的区别:scp复制为完全覆盖,rsync为增量同步,只同步修改过的数据.rsync命令格式如下: rsync 选项 源文件 ...
- 理解css之position属性
之前css学的一直不精致而且没有细节,为了成为一个完美的前端工作人员,所以决定重新学习css的属性.当然会借鉴MDZ文档(MDZ文档)或其他博主的经验来总结.在这里会注明借鉴或引用文章的出处.侵权即删 ...
- 在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置
ArcGIS Server发布完FeatureLayer后,就可以在自己的代码中调用并在地图上显示出来了. 一.代码框架 调用FeatureLayer,要在require开头引入"esri/ ...
- 一、Activity的生命周期和启动模式
1.Activity的生命周期 1.1.典型情况下的生命周期 在有用户参与的情况下,Activity所经过的生命周期的改变. Activity会经历如下生命周期: onCreate-onRestart ...
- sublime text 3 无法安装Package Control插件解决办法
sublime text 3 无法安装Package Control插件解决办法 ***关于sublime text 3 常用的 Package Control插件的安装方法*** 1.CTRL+` ...
- Beyond Compare 3.3.8 build 16340 + Key
本文摘录自冰点社区:http://forum.z27315.com/topic/14746-beyond-compare-338-build-16340-key/ Download Beyond Co ...
- 露脸!钉钉通过SOC2隐私性原则审计,安全和隐私保护达超一流国际标准
2018年4月3日,阿里巴巴钉钉宣布已经正式通过了两项安全方面的权威资质:SOC2Type1服务审计报告和ISO27018(公有云体系下的隐私保护)证书. 钉钉方透露,此次通过美国注册会计师协会(AI ...