gpt4 book ai didi

mongodb - mongodb全文搜索中textScore字段是如何计算的?

转载 作者:行者123 更新时间:2023-12-02 01:01:01 26 4
gpt4 key购买 nike

我想知道MongoDB是如何计算全文搜索中文本的分数的。就像我会搜索 samsung note edge如下:

Samsung Galaxy Note Edge
Samsung Galaxy Note 4
Samsung Galaxy S6 Edge
Samsung Galaxy Note 4 duos
Samsung Z

全文搜索如下:

db.mobiles.find({
$text : {$search : "samsung note edge"}
}, {
score : {$meta : "textScore" }
}).sort({
score : {$meta : "textScore" }
})

给我的结果如下:

{
name : "Samsung Galaxy Note Edge",
score: 1.875000
},
{
name : "Samsung Galaxy Note 4",
score: 1.250000
},
{
name : "Samsung Galaxy S6 Edge",
score: 1.250000
},
{
name : "Samsung Galaxy Note 4 duos",
score: 1.200000
},
{
name : "Samsung Z",
score: 0.750000
}

如果我搜索 Samsung edge,结果会有所不同

最佳答案

  • exp = 0开始;
  • 每次该术语出现时:如果 exp = 0,则设置 exp = 1,否则设置 exp = 2 * exp;
  • 将频率增加 1/exp

所以,事实上,你是对的,这里有一个几何级数的和。如果某个术语出现 k 次,则该术语的频率(更像是分数而不是频率,但在结构体中称为 freq)将是1 + 1/2 + ... + (1/2)^(k - 1) = (1 - (1/2)^k)/(1 - 1/2) = 2 * (1 - 1/2^k)

关于mongodb - mongodb全文搜索中textScore字段是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29790861/

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