Jekyll で日本語検索に対応する
本サイトで導入している Jekyll テーマ Just The Docs で、日本語検索ができなかったので対応する。
Step 1.
/assets/js/vendor/
配下に、以下の js ファイルを設置する。
※ファイル自体は lunr-languages (GitHub) からコピペで持ってくる。
lunr.stemmer.support.min.js
lunr.ja.min.js
tinyseg.js
Step 2.
_includes/head_custom.html
に以下を記述する。
{% if site.search_enabled != false %}
<script type="text/javascript" src="{{ '/assets/js/vendor/lunr.stemmer.support.min.js' | absolute_url }}"></script>
<script type="text/javascript" src="{{ '/assets/js/vendor/tinyseg.js' | absolute_url }}"></script>
<script type="text/javascript" src="{{ '/assets/js/vendor/lunr.ja.min.js' | absolute_url }}"></script>
{% endif %}
<script>
タグの読み込み順序注意!
Step 3.
assets/js/just-the-docs.js
にある var index = lunr(function(){
のすぐ下の行に this.use(lunr.ja);
を追記する。
以下の感じで:
var index = lunr(function(){
this.use(lunr.ja); // ←これを追記
this.ref('id');
this.field('title', { boost: 200 });
this.field('content', { boost: 2 });
{%- if site.search.rel_url != false %}
this.field('relUrl');
出力結果
できた。
補足
複数言語対応として、こちら の方法を試したが、日本語だとうまくいかず沼った。ロシア語など他の言語ではできるようだが、、
this.use(lunr.multiLanguage('en', 'ru') );
どうやら js の既知問題らしい。