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