Ja, du kan bruge fuldtekstsøgning i Mongoose>=3.8.9. For det første kan en samling højst have ét tekstindeks (se dok.). Så for at definere tekstindeks for flere felter, skal du bruge sammensat indeks:
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });
Nu kan du bruge $text forespørgselsoperator som denne:
Model
.find(
{ $text : { $search : "text to look for" } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, results) {
// callback
});
Dette vil også sortere resultater efter relevansscore.
Med hensyn til vægte, kan du prøve at overføre vægtoptionsobjektet til index()
metode (hvor du definerer sammensat indeks) (fungerer i det mindste med v4.0.1 af mongoose):
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});