首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在mongodb全文检索中textScore字段是如何计算的?

在mongodb全文检索中textScore字段是如何计算的?
EN

Stack Overflow用户
提问于 2015-04-22 15:41:17
回答 1查看 3.8K关注 0票数 11

我想知道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,结果会有所不同

EN

回答 1

Stack Overflow用户

发布于 2016-11-29 10:15:34

这个词出现的时间以频率开头:if exp = 0, set exp = 1, else set exp = 2 * exp;

  • Increment exp = 0;

  • Each

  • by 1/exp.

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29790861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档