Да, можете да използвате пълнотекстово търсене в Mongoose>=3.8.9. Първо, една колекция може да има най-много един текстов индекс (вижте документи). Така че, за да дефинирате текстов индекс за няколко полета, имате нужда от съставен индекс:
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });
Сега можете да използвате $text оператор на заявка като този:
Model
.find(
{ $text : { $search : "text to look for" } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, results) {
// callback
});
Това също така ще сортира резултатите по оценка на уместност.
Що се отнася до теглата, можете да опитате да предадете обект на опции за тегла на index()
метод (където дефинирате съставен индекс) (работи поне с v4.0.1 на mongoose):
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});