Skip to content
Snippets Groups Projects
redirector.md 2.03 KiB
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 }}