-
John Thiltges authoredJohn Thiltges authored
title: "Redirector"
{{`
// Search for URL parameter 'q' and redirect to top match
var lunrIndex;
function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] === variable) {
return decodeURIComponent(pair[1].replace(/\+/g, '%20'));
}
}
}
// Initialize lunrjs using our generated index file function initLunr() { // First retrieve the index file return $.getJSON(baseurl + "/index.json") .done(function(index) { pagesIndex = index; // Set up lunrjs by declaring the fields we use // Also provide their boost level for the ranking lunrIndex = new lunr.Index lunrIndex.ref("uri"); lunrIndex.field('title', { boost: 15 }); lunrIndex.field('tags', { boost: 10 }); lunrIndex.field("content", { boost: 5 });
// Feed lunr with each file and let lunr actually index them
pagesIndex.forEach(function(page) {
lunrIndex.add(page);
});
lunrIndex.pipeline.remove(lunrIndex.stemmer)
})
.fail(function(jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.error("Error getting Hugo index file:", err);
});
}
function search(query) { // Find the item in our index corresponding to the lunr one to have more info return lunrIndex.search(query).map(function(result) { return pagesIndex.filter(function(page) { return page.uri === result.ref; })[0]; }); }
initLunr().then(function() { var searchTerm = getQueryVariable('q'); var results = search(searchTerm);
if (!results.length) {
window.location = baseurl;
} else {
window.location = results[0].uri;
}
});
` | safeJS }}