--- layout: page --- <script src="/assets/js/lunr.min.js"></script> <script> // data var pages = [ {% for post in site.posts %} { "id": "{{ post.url | slufigy }}", "title": {{ post.title | jsonify }}, "content": {{ post.content | strip_html | jsonify }}, "url": "{{ post.url | xml_escape }}" } {% unless forloop.last %},{% endunless %} {% endfor %} ]; // index var idx = lunr(function () { this.ref('url'); this.field('title'); this.field('content'); pages.forEach(function (doc) { this.add(doc); }, this); }); </script> <p> <input id="input_qterm"></input> <button id="qsubmit">Submit</button> </p> <h1>Search results for <span id="qterm"></span></h1> <div id="results"> </div> <script> // search function query(queryterm) { var result = idx.search(queryterm); const rbase = document.getElementById("results") rbase.textContent = ""; if (result.length) { var root = rbase.appendChild(document.createElement("ul")); result.forEach(r => { const p = pages.find(p => p.id == r.ref); var li = document.createElement("li") var el = li.appendChild(document.createElement("a")); el.textContent = p.title; el.href = p.url; el = li.appendChild(document.createElement("span")); el.textContent = " [score: " + r.score.toString() + "]"; root.appendChild(li); }); } else { var el = document.createElement("p"); el.textContent = "No results"; rbase.appendChild(el); } document.getElementById("qterm").textContent = queryterm; }; const qbox = document.getElementById("input_qterm"); document.getElementById("qsubmit").onclick = ev => { alert(qbox.value); }; </script>