diff --git a/assets/js/flexsearch.js b/assets/js/flexsearch.js index 80c77410..68d95aa2 100644 --- a/assets/js/flexsearch.js +++ b/assets/js/flexsearch.js @@ -195,8 +195,19 @@ document.addEventListener("DOMContentLoaded", function () { */ async function preloadIndex() { const tokenize = '{{- site.Params.search.flexsearch.tokenize | default "forward" -}}'; + + const isCJK = () => { + const lang = document.documentElement.lang || "en"; + return lang.startsWith("zh") || lang.startsWith("ja") || lang.startsWith("ko"); + } + + const encodeCJK = (str) => str.replace(/[\x00-\x7F]/g, "").split(""); + const encodeDefault = (str) => (""+str).toLocaleLowerCase().split(/[\p{Z}\p{S}\p{P}\p{C}]+/u); + const encodeFunction = isCJK() ? encodeCJK : encodeDefault; + window.pageIndex = new FlexSearch.Document({ tokenize, + encode: encodeFunction, cache: 100, document: { id: 'id', @@ -207,6 +218,7 @@ document.addEventListener("DOMContentLoaded", function () { window.sectionIndex = new FlexSearch.Document({ tokenize, + encode: encodeFunction, cache: 100, document: { id: 'id',