function formatSearchResultHeader(term, count) { if (count === 0) { return "No search results for '" + term + "'."; } return count + " search result" + count > 1 ? "s" : "" + " for '" + term + "':"; } function formatSearchResultItem(term, item) { console.log(item); return '
' + item + '
'; } function initSearch() { var $searchInput = document.getElementById("search"); var $searchResults = document.querySelector(".search-results"); var $searchResultsHeader = document.querySelector(".search-results__headers"); var $searchResultsItems = document.querySelector(".search-results__items"); var options = { bool: "AND", expand: true, teaser_word_count: 30, limit_results: 30, fields: { title: {boost: 2}, body: {boost: 1}, } }; var currentTerm = ""; var index = elasticlunr.Index.load(window.searchIndex); $searchInput.addEventListener("keyup", function() { var term = $searchInput.value.trim(); if (!index || term === "" || term === currentTerm) { return; } $searchResults.style.display = term === "" ? "block" : "none"; $searchResultsItems.innerHTML = ""; var results = index.search(term, options); currentTerm = term; $searchResultsHeader.textContent = searchResultText(term, results.length); for (var i = 0; i < results.length; i++) { var item = document.createElement("li"); item.innerHTML = formatSearchResult(results[i], term); $searchResultsItems.appendChild(item); } }); } if (document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll) ) { initSearch(); } else { document.addEventListener("DOMContentLoaded", initSearch); }