Ja, u kunt zoeken in volledige tekst in Mongoose>=3.8.9. Ten eerste kan een collectie maximaal één tekstindex hebben (zie docs). Om de tekstindex voor verschillende velden te definiëren, hebt u dus een samengestelde index nodig:
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });
Nu kunt u $text . gebruiken query-operator als volgt:
Model
.find(
{ $text : { $search : "text to look for" } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, results) {
// callback
});
Hiermee worden de resultaten ook gesorteerd op relevantiescore.
Wat betreft gewichten, je kunt proberen om het object weights options door te geven aan index()
methode (waar je de samengestelde index definieert) (werkt in ieder geval met v4.0.1 van mangoest):
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});