はい、Mongoose>=3.8.9で全文検索を使用できます。まず、コレクションには最大で1つのテキストインデックスを含めることができます(ドキュメントを参照)。したがって、いくつかのフィールドのテキストインデックスを定義するには、複合インデックスが必要です。
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で動作):
schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});