Skip to content

Instantly share code, notes, and snippets.

@eugeneware
Created November 5, 2013 22:22
Show Gist options
  • Save eugeneware/7327394 to your computer and use it in GitHub Desktop.
Save eugeneware/7327394 to your computer and use it in GitHub Desktop.
var level = require('level');
var query = require('level-queryengine');
var fulltext = require('fulltext-engine');
var rimraf = require('rimraf').sync;
rimraf(__dirname + '/db');
var db = query(level(__dirname + '/db', {
valueEncoding: 'json'
}));
db.query.use(fulltext());
db.ensureIndex('name', 'fulltext', fulltext.index());
var values = Math.pow(26, 3);
var ops = [];
for (var i = 0; i < 26; i++) {
for (var j = 0; j < 26; j++) {
for (var k = 0; k < 26; k++) {
var name = String.fromCharCode(97 + i)
+ String.fromCharCode(97 + j)
+ String.fromCharCode(97 + k);
ops.push({ type: 'put', key: name, value: { name: name } });
}
}
}
ops.push({ type: 'put', key: 'dog training', value: { name: 'dog training' } });
ops.push({ type: 'put', key: 'dog food', value: { name: 'dog food' } });
ops.push({ type: 'put', key: 'who let the dogs out', value: { name: 'who let the dogs out' } });
ops.push({ type: 'put', key: 'cat training', value: { name: 'cat training' } });
ops.push({ type: 'put', key: 'cat food', value: { name: 'cat food' } });
ops.push({ type: 'put', key: 'who let the cats out', value: { name: 'who let the cats out' } });
var start = Date.now();
db.batch(ops, function(err) {
setTimeout(function () {
console.log('inserted %s values (took %sms)', values, Date.now() - start);
if (err) throw err;
var matches = [];
var query = 'training';
console.log('querying for %s', query);
start = Date.now();
db.query('name', query)
.on('data', function(name) {
console.log(name);
matches.push(name);
})
.on('stats', console.log)
.on('end', function() {
console.log('%s out of %s names match (took %sms)',
matches.length, values, Date.now() - start);
});
}, 1000);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment