2017-02-17 24 views
1

我在文檔中有一個字段是排名:值越低,它應該有的分數越高。首先是最好的,但最後是最糟糕的。所以1的排名好於100萬。在Elasticsearch中,您如何通過排名(第一,第二,第三......)字段的值提高分數?

到目前爲止,我已經能夠通過score_query and field_value_factor提升本場價值本身,但它給了文檔數量更高的文檔更高的提升。

"field_value_factor": { 
    "field": "rank", 
    "factor": 1.2, 
    "modifier": "sqrt", 
    "missing": 1 
} 

我應該使用不同的修改?或者我是否完全錯誤?另外,我不想單獨分類,因爲我有其他因素影響_score

+0

似乎有不被任何在這一問題相關[Boost C++庫(http://stackoverflow.com/tags/boost/info) - 請不要濫用標籤。 (作爲一個經常訪問這個網站超過7年的人,你現在應該知道這一點) –

+0

哎呦,在那裏得到了標籤。對於那個很抱歉。過了一段時間,因爲我問了一個問題。感謝您的接觸,@DanMašek – JayNCoke

+0

不用擔心,它可能發生:)它實際上有點有趣,看到標記爲「相關性」的東西:D –

回答

1

實際上,你需要採取往復運動rank值,即1/rank改性劑的功能,使等級越高,較低的值將是意志和rank = 1會得到一個得分1.確實只有一個它是reciprocal

"field_value_factor": { 
    "field": "rank", 
    "factor": 1.2, 
    "modifier": "reciprocal", 
    "missing": 1 
} 
+0

啊,這是有道理的。謝謝! – JayNCoke

相關問題