Mongo $ text搜索-得分结果不是我期望的

时间:2019-09-24 02:10:36

标签: mongodb mongodb-query

我正在尝试使用mongo $ text搜索替换在多个字段上使用$ regex的现有查询,并发现分数与我期望的不符。我在下面创建了一个小样本来演示:

db.pers.insert({ 'name': 'Thoma', 'firstName': 'Albert'})
db.pers.insert({ 'name': 'Thoma', 'firstName': 'Berta'})
db.pers.insert({ 'name': 'Thoma', 'firstName': 'Charlie'})
db.pers.insert({ 'name': 'Thomas', 'firstName': 'David'})

db.pers.createIndex( {name: "text"} )

db.pers.find( {$text: { $search: 'Thomas'} }, { 'score': { $meta: 'textScore' } } ).pretty()

...这是结果:

{   
  "_id" : ObjectId("5d88a2914185d8425164d564"),
  "name" : "Thomas",
  "firstName" : "David",
  "score" : 1
}
{
  "_id" : ObjectId("5d88a2674185d8425164d561"),
  "name" : "Thoma",
  "firstName" : "Albert",
  "score" : 1.1
}
{
  "_id" : ObjectId("5d88a26e4185d8425164d562"),
  "name" : "Thoma",
  "firstName" : "Berta",
  "score" : 1.1
}
{
  "_id" : ObjectId("5d88a2794185d8425164d563"),
  "name" : "Thoma",
  "firstName" : "Charlie",
  "score" : 1.1
}

令我惊讶的是,完全匹配Thomas的得分低于其他结果。

  • 这是什么原因?

  • 是否有一种方法可以影响得分,以便精确匹配得分更高?

我想将分数用于排序目的。这样的结果很好,因为我想在上面的示例中找到Thoma。但是-我也希望在搜索结果的顶部完全匹配。

非常感谢您提供有关评分的任何意见或针对不同解决方案的建议。

0 个答案:

没有答案