jQuery()

in js/search.js [1:48]


jQuery(function() {

  window.idx = lunr(function () {
    this.field('id');
    this.field('title');
    this.field('content', { boost: 10 });
    this.field('categories');
  });

  window.data = $.getJSON('/search_data.json');

  window.data.then(function(loaded_data){
    $.each(loaded_data, function(index, value){
      window.idx.add($.extend({ "id": index }, value));
    });
  });

  $("#site_search").submit(function(event){
      event.preventDefault();
      var query = $("#search_box").val();
      var results = window.idx.search(query);
      display_search_results(query, results);
  });

  function display_search_results(query, results) {
    var $search_status = $("#search_status");
    var $search_results = $("#search_results");

    window.data.then(function(loaded_data) {

      if (results.length) {
        $search_status.html('Found ' + results.length + ' results for "' + query + '"');
        $search_results.empty();
        results.forEach(function(result) {
          var item = loaded_data[result.ref];
          var n = item.content.search(query) - 50
          if (n < 0) {
            n = 0;
          }
          var appendString = '<tr><td><a href="' + item.url + '">' + item.title + '</a><td>' + item.content.substring(n, n+100) + '</tr>';
          $search_results.append(appendString);
        });
      } else {
        $search_status.html('No results found!');
      }
    });
  }
});