Elasticsearch で数値のフィールドの値によるスコアリングのメモ。
value フィールドの値の重みを変更してスコアがどう変わるかを確認します。
■インデックス定義
■クエリパターン
■title_boost: 1.0、body_boost: 1.0、value_factor: 0.0 の場合
■title_boost: 1.0、body_boost: 1.0、value_factor: 1.0 の場合
doc_01 の value の値(1.0)、doc_02 の value の値(2.0)が加算されています。
■title_boost: 1.0、body_boost: 1.0、value_factor: 10.0 の場合
doc_01 の value の値(1.0)、doc_02 の value の値(2.0)の 10倍の値が加算されています。
value フィールドの値の重みを変更してスコアがどう変わるかを確認します。
■インデックス定義
{ "mappings": { "dynamic": "strict", "properties": { "id": {"type": "keyword", "store": "true"}, "title": {"type": "text", "store": "true"}, "body": {"type": "text", "store": "true"}, "value": {"type": "float", "store": "true"} } } }
■クエリパターン
{ "query": { "function_score": { "query": { "bool": { "should": [ {"match": {"title": {"query": "abc", "boost": 【title_boost】}}}, {"match": {"body": {"query": "abc", "boost": 【body_boost】}}} ] } }, "functions": [ {"field_value_factor": { "field": "value", "modifier": "none", "factor": 【value_factor】 }} ], "score_mode": "sum", "boost_mode": "sum" } }, "_source": ["id", "title", "score"] }
■title_boost: 1.0、body_boost: 1.0、value_factor: 0.0 の場合
"hits" : [ { "_index" : "idx2", "_id" : "doc_01", "_score" : 2.059239, "_source" : { "id" : "doc_01", "title" : "商品1 abc社" } }, { "_index" : "idx2", "_id" : "doc_02", "_score" : 2.059239, "_source" : { "id" : "doc_02", "title" : "商品2 abc社" } } ]
■title_boost: 1.0、body_boost: 1.0、value_factor: 1.0 の場合
doc_01 の value の値(1.0)、doc_02 の value の値(2.0)が加算されています。
"hits" : [ { "_index" : "idx2", "_id" : "doc_02", "_score" : 4.059239, "_source" : { "id" : "doc_02", "title" : "商品2 abc社" } }, { "_index" : "idx2", "_id" : "doc_01", "_score" : 3.059239, "_source" : { "id" : "doc_01", "title" : "商品1 abc社" } } ]
■title_boost: 1.0、body_boost: 1.0、value_factor: 10.0 の場合
doc_01 の value の値(1.0)、doc_02 の value の値(2.0)の 10倍の値が加算されています。
"hits" : [ { "_index" : "idx2", "_id" : "doc_02", "_score" : 22.059238, "_source" : { "id" : "doc_02", "title" : "商品2 abc社" } }, { "_index" : "idx2", "_id" : "doc_01", "_score" : 12.059238, "_source" : { "id" : "doc_01", "title" : "商品1 abc社" } } ]