2015-04-22 13 views
9

Ich möchte wissen, wie MongoDB die Punktzahl des Textes in der Volltextsuche berechnet. Wie, wenn ich für samsung note edge in folgenden suchen:Wie wird das Textfeld in der mongodb Volltextsuche berechnet?

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

Volltextsuche wie folgt:

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

gibt mir wie folgt ergeben:

sind
{ 
    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 
} 

Die Ergebnisse anders, wenn Ich suche nach Samsung edge

+1

gehen Sie bitte https://groups.google .com/forum/#! topic/mongodb-benutzer/99t5WXmUUAg – Vishwas

Antwort

0

Start mit exp = 0 jedes Mal, wenn der Begriff vorkommt: wenn exp = 0 gesetzt exp = 1, sonst gesetzt exp = 2 * exp Erhöhung der Frequenz von 1/exp

So in der Tat, sind Sie richtig, dass hier gibt es eine Summe einer geometrischen Reihe. Wenn ein Term k mal vorkommt, dann ist die Häufigkeit des Terms (die mehr wie ein Score als eine Frequenz ist, aber in der Struktur freq genannt wird) 1 + 1/2 + ... + (1/2)^(k - 1) = (1 - (1/2)^k)/(1 - 1/2) = 2 (1 - 1/2^k)

Verwandte Themen