36 lines
		
	
	
		
			980 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			980 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
window.Searcher = (function() {
 | 
						|
    function Searcher() {
 | 
						|
        this._index = lunr(function () {
 | 
						|
            this.field('title', {boost: 10})
 | 
						|
            this.field('body')
 | 
						|
            this.ref('id')
 | 
						|
          }) ;
 | 
						|
 | 
						|
        this._indexContent = undefined;
 | 
						|
    }
 | 
						|
 | 
						|
    Searcher.prototype.init = function() {
 | 
						|
        var self = this;
 | 
						|
 | 
						|
        $("script[type='text/x-docstrap-searchdb']").each(function(idx, item)  {
 | 
						|
            self._indexContent = JSON.parse(item.innerHTML);
 | 
						|
 | 
						|
            for (var entryId in self._indexContent) {
 | 
						|
                self._index.add(self._indexContent[entryId]);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    };
 | 
						|
 | 
						|
    Searcher.prototype.search = function(searchTerm) {
 | 
						|
        var results = [],
 | 
						|
                searchResults = this._index.search(searchTerm);
 | 
						|
 | 
						|
        for (var idx = 0; idx < searchResults.length; idx++) {
 | 
						|
            results.push(this._indexContent[searchResults[idx].ref])
 | 
						|
        }
 | 
						|
 | 
						|
        return results;
 | 
						|
    };
 | 
						|
 | 
						|
    return new Searcher();
 | 
						|
})(); |