mirror of
https://github.com/sys-nyx/red-arch.git
synced 2025-05-06 16:55:17 -04:00
added search.js for handling search results
This commit is contained in:
parent
831dc1452b
commit
e9d7144eae
1 changed files with 61 additions and 0 deletions
61
r/static/js/search.js
Normal file
61
r/static/js/search.js
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
let idxs = new XMLHttpRequest();
|
||||||
|
idxs.open('GET', '/static/js/search/search-idx-list.json', false);
|
||||||
|
idxs.send();
|
||||||
|
let idx_list =JSON.parse(idxs.responseText);
|
||||||
|
|
||||||
|
let lnrjs = new XMLHttpRequest();
|
||||||
|
lnrjs.open('GET', '/static/js/lunr.js', false);
|
||||||
|
lnrjs.send();
|
||||||
|
eval(lnrjs.responseText);
|
||||||
|
|
||||||
|
|
||||||
|
let meta = new XMLHttpRequest();
|
||||||
|
meta.open('GET', '/static/js/search/metadata.json', false);
|
||||||
|
meta.send();
|
||||||
|
var metadata = JSON.parse(meta.responseText)
|
||||||
|
|
||||||
|
|
||||||
|
async function getData(element) {
|
||||||
|
const url = `/${element}`;
|
||||||
|
try {
|
||||||
|
const response = await fetch(url);
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Response status: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const json = await response.json();
|
||||||
|
return json
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onmessage = (e) => {
|
||||||
|
let query = e.data
|
||||||
|
let results = []
|
||||||
|
idx_list.forEach(element => {
|
||||||
|
p = getData(element)
|
||||||
|
p.then(function (json) {
|
||||||
|
let idx = lunr.Index.load(json)
|
||||||
|
res = idx.search(query).slice(0,100)
|
||||||
|
res.forEach(r => {
|
||||||
|
r.meta = metadata[r.ref]
|
||||||
|
})
|
||||||
|
results = results.concat(res)
|
||||||
|
results = results.sort(({score:a}, {score:b}) => b-a);
|
||||||
|
results = results.slice(0,100)
|
||||||
|
postMessage(results)
|
||||||
|
})
|
||||||
|
// let request = new XMLHttpRequest();
|
||||||
|
// request.open('GET', `/${element}`, false);
|
||||||
|
// request.send();
|
||||||
|
// console.log(JSON.parse(request.responseText))
|
||||||
|
// let idx = lunr.Index.load(JSON.parse(request.responseText))
|
||||||
|
// res = idx.search(query).slice(0,100)
|
||||||
|
// results = results.concat(res)
|
||||||
|
// results = results.sort(({score:a}, {score:b}) => b-a);
|
||||||
|
// results = results.slice(0,100)
|
||||||
|
// postMessage(results)
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue