ES 筆記二十五:綜合排序 Function Score Query 優化算分
CrazyZard發表於2019-11-26
- ES 預設會以文件的相關度算分進行排序
- 可以通過制定一個或者多個欄位進行排序
- 使用相關性算分(score)排序,不能滿足某些特定條件
- Function Score Query
- 可以在查詢結束後,對每一個匹配的文件進行一系列的重新算分,根據新生成的分數進行排序
- 提供了幾種預設的計算分值的函式
- Weight:為每一個文件設定一個簡單而不被規範化的權重
- Field Value Factor:使用該數值來修改_score,例如將“熱度”和“點贊數”作為算分的參考因素
- Random Score:為每一個使用者使用一個不同的,隨機算分結果
按受歡迎度提升權重
- 希望能夠將點贊多的blog,放在搜尋列表相對靠前的位置。同事搜尋的評分,還是要作為排序的主要依據
- 新的算分= 老的算分*投票數
使用Modifier平滑曲線
引入Factor
- 新的算分 = 老的算分 log(1 + factor投票數)
Boost Mode 和 Max Boost
- Boost Mode
- Multiply:算分和函式值的乘積
- Sum:算分和函式值的和
- Min/Max:算分與函式去 最小/最大值
- Replace:使用函式取代算分
- Max Boost 可以將算分控制在一個最大值
一致性隨機函式
- 使用場景:網址的廣告需要提高展示率
- 具體需求:讓每個使用者看到不同的隨機排名,但是也希望同一個使用者訪問時,結果的相對順序,保持一致(Consistently Random)