Пример #1
0
var SearchIndex = module.exports = function (options) {
  var logLevel = 'info';
  var indexPath = 'si';
  var logSilent = false;

  if (options) {
    if (options.logLevel)
      logLevel = options.logLevel;
    if (options.indexPath)
      indexPath = options.indexPath;
    if (options.logSilent)
      logSilent = options.logSilent;
  }
  indexes = level(indexPath, {valueEncoding: 'json'}),
  indexesMultiply = levelMultiply(indexes);

  searchIndexLogger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({
        level: logLevel,
        silent: logSilent
      })
    ]
  });

  calibrater.getTotalDocs(indexes, function(totalDocs) {
    searcher.setTotalDocs(totalDocs);
  });

  return SearchIndex;
};
Пример #2
0
module.exports = function(loc){
	if(db){
		return db;
	}
	else{
		db = sublevel(levelup(loc));
		db = levelplus(db);
		db = LevelMult(db, 'm');
		return db;
	}
}
Пример #3
0
module.exports = function(name){
	if(!name){
		return;
	}
	// each model is going to get it's own sublevel and index
	var modelDB = DB.sublevel(name, {
		valueEncoding: 'json'
	}),
	modelIndex = modelDB.sublevel('__index', {
		keyEncoding: bytewiseEncode,
		valueEncoding: 'json'
	});
	modelDB    = LevelMultiply(modelDB, 'm');
	modelIndex = LevelMultiply(modelIndex, 'm');

	var theModel = new Model(modelDB, modelIndex);

	modelDB.pre(function(ch, add){
		switch(ch.type){
			case 'put': // on put, index or re-index the object
				if(ch.value && ch.key && ch.value instanceof Object){
					theModel.indexDocument(ch.value, ch.key);
				}
				break;
			case 'del': // on delete, unindex the object
				if(ch.key){
					theModel.unindexDocument(ch.key)
				}
				break;
		}
	});

	return theModel;
	// Meta helper methods

	// Model._index()

	// Model._unindex()
}
Пример #4
0
 rmdir('si', function(error){
   indexes = level('si', {valueEncoding: 'json'});
   indexesMultiply = levelMultiply(indexes);
   callback(err);
 });
Пример #5
0
var fs = require('fs'),
level = require('level'),
levelMultiply = require('level-multiply'),
indexPeek = require('./indexing/indexPeek.js'),
matcher = require('./matchers/matcher.js'),
calibrater = require('./indexing/calibrater.js'),
indexer = require('./indexing/indexer.js'),
searcher = require('./mapreduce/searcher.js'),
reverseIndex = level('si', {valueEncoding: 'json'}),
reverseIndexMultiply = levelMultiply(reverseIndex);
docFreqIndex = level('df', {valueEncoding: 'json'});

//init functions
calibrater.getTotalDocs(docFreqIndex, function(totalDocs) {
  searcher.setTotalDocs(totalDocs);
});
//end init

exports.indexPeek = function(start, stop, callback) {
  indexPeek.indexPeek(start, stop, reverseIndex, function(msg) {
    callback(msg);
  });
};


exports.generateMatcher = function(callback) {
  matcher.generateMatcher(reverseIndex, function(msg) {
    callback(msg);
  });
}