#80, Add search index configuration

This commit is contained in:
Alex Shpak
2019-10-27 11:58:58 +01:00
parent b4307e7c09
commit a5788d71fa
8 changed files with 88 additions and 74 deletions
+21 -26
View File
@@ -1,30 +1,25 @@
'use strict';
(function() {
const pages = [
{{ range $index, $page := .Site.Pages }}
{{- if $index -}},{{- end }}
{
'idx': {{ $index }},
'href': '{{ $page.RelPermalink }}',
'title': {{ (partial "docs/title" $page) | jsonify }},
'content': {{ $page.Plain | jsonify }}
}
{{- end -}}
];
const indexCfg = {{ with .Site.Params.BookSearchConfig }}
{{ . }}
{{ end }};
var index = new FlexSearch({
cache: true,
encode: 'balance',
/* tokenize: function(str) {
return str.replace(/[\x00-\x7F]/g, ' ').split('');
} */
indexCfg.doc = {
id: 'id',
field: ['title', 'content'],
store: ['title', 'href'],
};
const index = FlexSearch.create('balance', indexCfg);
window.bookSearchIndex = index;
{{ range $index, $page := .Site.Pages }}
index.add({
'id': {{ $index }},
'href': '{{ $page.RelPermalink }}',
'title': {{ (partial "docs/title" $page) | jsonify }},
'content': {{ $page.Plain | jsonify }}
});
pages.forEach(function(page, x) {
index.add(x, pages[x].content);
})
window.bookSearch = {
pages: pages,
index: index,
}
{{- end -}}
})();
+7 -7
View File
@@ -1,5 +1,6 @@
{{- $searchData := resources.Get "search-data.js" | resources.ExecuteAsTemplate "search-data.js" . | resources.Minify | resources.Fingerprint }}
'use strict';
{{- $searchData := resources.Get "search-data.js" | resources.ExecuteAsTemplate "search-data.js" . | resources.Minify | resources.Fingerprint }}
(function() {
const input = document.querySelector('#book-search-input');
const results = document.querySelector('#book-search-results');
@@ -8,10 +9,10 @@
input.addEventListener('keyup', search);
function init() {
input.removeEventListener('focus', init); //init once
input.removeEventListener('focus', init); // init once
input.required = true;
loadScript('{{ "flexsearch.light.js" | relURL }}');
loadScript('{{ "flexsearch.min.js" | relURL }}');
loadScript('{{ $searchData.RelPermalink }}', function() {
input.required = false;
search();
@@ -27,9 +28,8 @@
return;
}
let searchHits = window.bookSearch.index.search(input.value, 10);
searchHits.forEach(function(hit) {
const page = window.bookSearch.pages[hit];
const searchHits = window.bookSearchIndex.search(input.value, 10);
searchHits.forEach(function(page) {
const li = document.createElement('li'),
a = li.appendChild(document.createElement('a'));
@@ -47,6 +47,6 @@
script.src = src;
script.onload = callback;
document.head.append(script);
document.head.appendChild(script);
}
})();