mirror of
https://github.com/McShelby/hugo-theme-relearn.git
synced 2024-11-30 11:13:06 +00:00
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
|
import {
|
||
|
create,
|
||
|
search as oramaSearch,
|
||
|
insertMultiple,
|
||
|
} from "https://cdn.jsdelivr.net/npm/@orama/orama@latest/+esm";
|
||
|
// "https://unpkg.com/browse/@orama/orama@latest/dist/esm/index.js";
|
||
|
// https://cdn.jsdelivr.net/npm/@orama/orama@3.0.1/dist/esm/index.js
|
||
|
|
||
|
|
||
|
//import { createTokenizer } from '@orama/tokenizers/japanese'
|
||
|
//import { stopwords as japaneseStopwords } from "@orama/stopwords/japanese";
|
||
|
|
||
|
let searchEngine = null;
|
||
|
|
||
|
async function init() {
|
||
|
async function initIndex( index ){
|
||
|
searchEngine = await create({
|
||
|
schema: {
|
||
|
title: 'string',
|
||
|
content: 'string',
|
||
|
uri: 'string',
|
||
|
breadcrumb: 'string',
|
||
|
description: 'string',
|
||
|
tags: 'string[]',
|
||
|
},
|
||
|
/*
|
||
|
defaultLanguage: 'french',
|
||
|
components: {
|
||
|
tokenizer: {
|
||
|
stemmingFn: stemmer,
|
||
|
},
|
||
|
},
|
||
|
*/
|
||
|
});
|
||
|
await insertMultiple(searchEngine, index);
|
||
|
|
||
|
window.relearn.isSearchEngineReady = true;
|
||
|
window.relearn.executeInitialSearch();
|
||
|
}
|
||
|
|
||
|
if( window.index_js_url ){
|
||
|
var js = document.createElement("script");
|
||
|
js.src = index_js_url;
|
||
|
js.setAttribute("async", "");
|
||
|
js.onload = function(){
|
||
|
initIndex(relearn_searchindex);
|
||
|
};
|
||
|
js.onerror = function(e){
|
||
|
console.error('Error getting Hugo index file');
|
||
|
};
|
||
|
document.head.appendChild(js);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function search( term ){
|
||
|
const searchResponse = await oramaSearch(searchEngine, {term: term, properties: '*'});
|
||
|
return searchResponse.hits.map( hit => ({ page: hit.document }) );
|
||
|
}
|
||
|
|
||
|
export { init, search };
|