pure-fts
Version:
pure-js full text search
37 lines (26 loc) • 750 B
JavaScript
;
var bsearch = require('binary-search');
function findIndex(config, name, cb) {
var bag_idx,
bag,
idx;
bag_idx = bsearch(config.index, name, function (a, b) {
return a.last < b ? -1 : (a.first > b ? 1 : 0);
});
if (bag_idx < 0) {
return cb(null);
}
bag = config.index[bag_idx];
config.getFile(bag.name, function (err, bagValues) {
if (err) {
return cb(err);
}
idx = bsearch(bagValues, name, function (a, b) {
var n = config.getName(a);
return n < b ? -1 : n > b;
});
return cb(null, (idx < 0) ? undefined : bagValues[idx],
bagValues);
});
}
module.exports = findIndex;