让 just-the-docs 搜索(lunr.js)支持多语言、支持中文

🕘
⏱️
👁️ * 阅读

just-the-docs 是适用于 Jekyll 的一款文档风格主题模板,非常的强大。但是比较可惜的是,原版搜索功能只支持英文内容搜索。

Jekyll 主题 just-the-docs 使用 lunr.js 实现搜索功能,lunr.js 实际是支持阿拉伯语、丹麦语、德语、荷兰语、希腊语、西班牙语、芬兰语、法语、希伯来语、印地语、匈牙利语、亚美尼亚语、意大利语、日语、韩文、卡纳达语、挪威语、波兰语、葡萄牙语、罗马尼亚语、俄语、梵语、瑞典语、泰卢固语、泰米尔语、泰语、土耳其语、越南语、中文,同时提供多语言混合搜索。

just-the-docs 中文搜索结果

无境最开始研究的时候挺头大的,实现以后发现其实很简单,下面为简化后的 lunr.js 实现多语言搜索的实现过程。只需要下载对应的文件并且修改2个文件即可,具体如下:

1: 打开assets\js\just-the-docs.js搜索 var index = lunr(function(){,在下面增加一行,并且粘贴以下内容

1
2
this.use(lunr.multiLanguage('en', 'zh'));
// 支持多语言搜索:英文(en)、中文(zh) by yijile.com

2: 下载lunr.multi.min.jslunr.stemmer.support.min.jslunr.zh.min.jss文件,存入’/assets/js/vendor/’ 目录中。(语言JS文件下载: https://github.com/MihaiValentin/lunr-languages/tree/master/min) 3: _includes\head_custom.html 文件中引入多语言js文件

1
2
3
4
5
{%- if site.search_enabled != false -%}
<script src="{{ '/assets/js/vendor/lunr.multi.min.js' | relative_url }}"></script>
<script src="{{ '/assets/js/vendor/lunr.stemmer.support.min.js' | relative_url }}"></script>
<script src="{{ '/assets/js/vendor/lunr.zh.min.js' | relative_url }}"></script>
{%- endif -%}

演示: https://1px.run

lunr.multi.min.js 和 lunr.stemmer.support.min.js 文件是必须的。

如果还需要支持其他语言就按照上面步骤,在配置文件中增加语言代码、下载对应语言js文件、在模板中引入对应语言js文件。

如果只要支持一个语言,例如只要支持中文,将this.use(lunr.multiLanguage('en', 'zh')); 改为this.use(lunr.zh)即可。

如果需要支持的是其他语言,将zh改为对应的语言代码即可。

对应的语言代码可通过 ISO 639-1 语言代码查询,或者通过js文件下载链接查找。

转载请注明转自:一极乐https://yijile.com/zh/make-just-the-docs-search-lunr-js-multilingual-chinese/

CC BY-NC-SA 4.0 声明
本文采用 CC BY-NC-SA 4.0方式授权。
转载请注明出处和本文链接,说明是否进行修改,不得用于商业用途,使用相同方式共享。

最后更新于 |
一极乐 赏荷