0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00
verdaccio/lib/search.js
Alex Kocharin 6a778e8c17 change code style to jshttp
close #155, see reasons there

This is a huge commit, so let me know if it will cause
any trouble, I might consider reverting it if it's the case.
2014-11-12 17:37:43 +03:00

48 lines
1.1 KiB
JavaScript

var lunr = require('lunr')
function Search() {
var self = Object.create(Search.prototype)
self.index = lunr(function() {
this.field('name' , { boost: 10 })
this.field('description' , { boost: 4 })
this.field('author' , { boost: 6 })
this.field('readme')
})
return self
}
Search.prototype.query = function(q) {
return this.index.search(q)
}
Search.prototype.add = function(package) {
this.index.add({
id: package.name,
name: package.name,
description: package.description,
author: package._npmUser ? package._npmUser.name : '???',
})
},
Search.prototype.remove = function(name) {
this.index.remove({ id: name })
}
Search.prototype.reindex = function() {
var self = this
this.storage.get_local(function(err, packages) {
if (err) throw err // that function shouldn't produce any
var i = packages.length
while (i--) {
self.add(packages[i])
}
})
}
Search.prototype.configureStorage = function(storage) {
this.storage = storage
this.reindex()
}
module.exports = Search()