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(); | ||
|  | })(); |