gpt4 book ai didi

mongodb - Mongoose 中权重的全文搜索

转载 作者:IT老高 更新时间:2023-10-28 11:01:36 28 4
gpt4 key购买 nike

据我所知,从 3.8.9 版本开始,mongoose 支持全文搜索。但是我找不到它的好文档!
我想做类似的事情:

db.collection.ensureIndex(
// Fields to index
{
animal: "text",
color: "text",
pattern: "text",
size: "text"
},

// Options
{
name: "best_match_index",

// Adjust field weights (default is 1)
weights: {
animal: 5, // Most relevant search field
size: 4 // Also relevant
}
}
)

我可以用纯 Mongoose 做吗?或者我必须使用一些插件,如 mongoose-text-search ?没有重量怎么办?
我该怎么做?

最佳答案

是的,您可以在 Mongoose >= 3.8.9 中使用全文搜索。首先,一个集合最多可以有一个文本索引(参见 docs)。因此,为 several fields 定义文本索引,你需要复合索引:

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });

现在您可以使用 $text query operator像这样:

Model
.find(
{ $text : { $search : "text to look for" } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, results) {
// callback
});

这还将按相关性分数对结果进行排序。

至于weights ,您可以尝试将权重选项对象传递给 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}});

关于mongodb - Mongoose 中权重的全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24714166/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com