42 lines
789 B
JavaScript
42 lines
789 B
JavaScript
|
"use strict";
|
||
|
|
||
|
var Promise = require('bluebird'),
|
||
|
_ = require('lodash'),
|
||
|
path = require('path'),
|
||
|
searchIndex = Promise.promisifyAll(require('search-index')),
|
||
|
stopWord = require('stopword');
|
||
|
|
||
|
/**
|
||
|
* Search Model
|
||
|
*/
|
||
|
module.exports = {
|
||
|
|
||
|
_si: null,
|
||
|
|
||
|
/**
|
||
|
* Initialize Search model
|
||
|
*
|
||
|
* @param {Object} appconfig The application config
|
||
|
* @return {Object} Search model instance
|
||
|
*/
|
||
|
init(appconfig) {
|
||
|
|
||
|
let dbPath = path.resolve(ROOTPATH, appconfig.datadir.db, 'search-index');
|
||
|
|
||
|
this._si = searchIndex({
|
||
|
deletable: true,
|
||
|
fieldedSearch: true,
|
||
|
indexPath: dbPath,
|
||
|
logLevel: 'error',
|
||
|
stopwords: stopWord.getStopwords(appconfig.lang).sort()
|
||
|
}, (err, si) => {
|
||
|
if(err) {
|
||
|
winston.error('Failed to initialize search-index.', err);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
};
|