ElasticSearchはsortが入っているとスコア順ソートにならない
sortをクエリから抜くとスコア順ソートになる
function_scoreを使うとドキュメントに対して自分でスコアをつけることができる
以下スコアリング設定方法
- field_value_factor
特定のフィールドによってスコアを上げる
ドキュメントのフィールド値をそのままスコアに利用出来る
- Decay functions
ドキュメントのスコアを調整するために減少関数利用出来る
減少関数は、基準日、基準の数値、基準の位置に対して離れれば任意の値でスコアを減少させていく関数
原点を決めて、原点から離れるとどれくらい減衰するかの程度を決めたりする
- weight
scoreに提供されたweightを掛けることが出来る 重みづけを変えることが出来る。
スコアを上げたい項目のweightを上げたりする
- Ramdom
ランダムな数値を返す
- Script Score
他のnumber型のfieldの値を使ってscore計算をカスタマイズできる
計算式を自分でかけるっぽい
functions内で複数の条件を組み合わせることが出来る
boost_mode、score_mode -> スコア演算で使用
boost_mode queryでの検索結果によるスコアとfuctions内のスコア合算計算の種類分け
multiply
queryのスコアとfunctionsのスコアの掛け算の結果をスコアとして返す (記述がない場合これがデフォルト設定)
function_scoreのスコア = boost_mode(queryスコア * boost, functionsスコア)
- replace
queryのスコアを破棄し、functionsのスコアのみを使用する
- sum
queryのスコアとfunctionsのスコアを加算した結果をスコアとして返す
queryのスコアとfunctionsのスコアの平均の結果をスコアとして返す
- max
queryのスコアとfunctionsのスコアの大きい方を結果として返す score_mode functions内の各項目の計算方法決め
- multiply
functions内の各項目のスコアの掛け算の結果をスコアとして返す (記述がない場合これがデフォルト設定)
- sum
functionsのスコアを足し算
- ave
functions内の各項目のスコアの平均とした結果をスコアとして返す
- first
functions内の各項目の最初に計算されたものを返す
- max
functions内の各項目のスコアの最大値を結果をスコアとして返す
- max_boost
計算後のスコアにリミット付けれる例:10を指定すると10以上のスコアつかない
- boost
クエリのスコアを上げる?2だと×2になる