Sha256: c4d4a1a951f1e386b6edb2fa69bd29e4832f8727e3d6928f1918e0641451c536
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
function filter(collection, q, config) { var results = []; var counter = 0; var fields = {_keywords: 1}; for(var i in config.select) { fields[config.select[i]] = 1; } var time = new Date().getTime(); db[collection].find(q, fields).limit(500).forEach(function(doc) { var rac = db.eval( function(doc, config) { var r = []; var c = 0; var set = {}; for(var i = 0; i<doc._keywords.length; i++) { set[doc._keywords[i]] = true; } var score = 0.0; for(var i = 0; i < config.words.length; i++) { var word = config.words[i]; if(set[word]) { score += 15.0; } } for(var i = 0; i < config.stemmed.length; i++) { var word = config.stemmed[i]; if(set[word]) { score += (1.0 + word.length); } } if(score >= config.min_score || 1.0 ) { delete doc._keywords; r.push({'score': score, 'doc': doc}); c += 1; } return [r, c]; }, doc, config ); for(var i = 0; i<rac[0].length; i++) { results.push(rac[0][i]); } counter += rac[1]; }); var sorted = results.sort(function(a,b) { return b.score - a.score; }); time = (new Date().getTime() - time); return {total_entries: counter, elapsed_time: time, results: sorted.slice(0, config.limit||500)}; }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mongoid_ext-0.9.0 | lib/mongoid_ext/js/filter.js |
mongoid_ext-0.7.1 | lib/mongoid_ext/js/filter.js |