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