ES 筆記二十五:綜合排序 Function Score Query 優化算分

CrazyZard發表於2019-11-26
  • ES 預設會以文件的相關度算分進行排序
  • 可以通過制定一個或者多個欄位進行排序
  • 使用相關性算分(score)排序,不能滿足某些特定條件
    • 無法針對相關度,對排序實現更多的控制
  • Function Score Query
    • 可以在查詢結束後,對每一個匹配的文件進行一系列的重新算分,根據新生成的分數進行排序
  • 提供了幾種預設的計算分值的函式
    • Weight:為每一個文件設定一個簡單而不被規範化的權重
    • Field Value Factor:使用該數值來修改_score,例如將“熱度”和“點贊數”作為算分的參考因素
    • Random Score:為每一個使用者使用一個不同的,隨機算分結果

按受歡迎度提升權重

  • 希望能夠將點贊多的blog,放在搜尋列表相對靠前的位置。同事搜尋的評分,還是要作為排序的主要依據
  • 新的算分= 老的算分*投票數
    • 投票數為0
    • 投票數很大時

使用Modifier平滑曲線

  • 新的算分 = 老的算分 * log(1+投票數)

ES 筆記二十五:綜合排序 Function Score Query 優化算分

引入Factor

  • 新的算分 = 老的算分 log(1 + factor投票數)

ES 筆記二十五:綜合排序 Function Score Query 優化算分

Boost Mode 和 Max Boost

  • Boost Mode
    • Multiply:算分和函式值的乘積
    • Sum:算分和函式值的和
    • Min/Max:算分與函式去 最小/最大值
    • Replace:使用函式取代算分
  • Max Boost 可以將算分控制在一個最大值

一致性隨機函式

  • 使用場景:網址的廣告需要提高展示率
  • 具體需求:讓每個使用者看到不同的隨機排名,但是也希望同一個使用者訪問時,結果的相對順序,保持一致(Consistently Random)

快樂就是解決一個又一個的問題!

相關文章