2015-04-22 55 views
9

我想知道MongoDB如何計算全文搜索中的文本分數。 一樣,如果我會爲samsung note edge在以下搜索:如下如何在mongodb全文搜索中計算textScore字段?

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

+1

請通過https://groups.google .COM /論壇/#!話題/ MongoDB的用戶/ 99t5WXmUUAg – Vishwas

回答

0

start與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)

相關問題