如何在MongoDB中设置文本搜索,以便在关键字首先显示的结果中获得更高的分数?
例如,这就是我现在正在做的事情:
db.product.aggregate(
[
{ $match: { $text: { $search: "notebook acer" }, isAvailable: true } },
{ $sort: { score: { $meta: "textScore" } } },
{ $project: { searchName: 1, _id: 0, score: { $meta: "textScore" } } }
]
)
在结果中,我得到:
{
"searchName" : "Mochila para Notebook Acer",
"score" : 1.25
},
{
"searchName" : "Notebook Acer E5-471-36me Intel Core I3 1.90ghz 4gb Hdd 500gb Linux Hdmi",
"score" : 1.0625
}
但我需要先得到第二个结果,因为关键字首先出现在索引字段中。
有没有办法实现这个目标?
我认为你必须使用运算符$ indexOfCP,你可以计算你的单词的位置,然后你可以对你计算的这个位置进行排序。
https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfCP/
对于位置部分,它是这样的:
db.product.aggregate(
[
{ $project: { kwPosition: { $indexOfCP: [ "$searchName", "notebook acer" ] } } },
{ $match: { "kwPosition": {"$ne": -1} } },
{ $sort: { kwPosition: 1 } }
]
)
您可以结合两种逻辑。