Query String
とBoost Fields
をElastic Search 1.7
で使用しています。それは正常に動作しているが、いくつかのシナリオでは、私は期待された結果を得ていない。
問合せ:エラスティック検索でブーストフィールドを含むクエリ文字列
query
{
"from": 0,
"size": 10,
"explain": true,
"query": {
"function_score": {
"query": {
"query_string": {
"query": "account and data",
"fields": [
"title^5"
"authors^4",
"year^5",
"topic^6"
],
"default_operator": "and",
"analyze_wildcard": true
}
},
"score_mode": "sum",
"boost_mode": "sum",
"max_boost": 100
}
}
}
サンプルデータ:
{
"took": 50,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 12.833213,
"hits": [
{
"_id": "19850",
"_score": 12.833213,
"_source": {
"ID": "19850",
"Year": "2010",
"Title": "account and data :..."
}
},
{
"_id": "16896",
"_score": 11.867042,
"_source": {
"ID": "16896",
"Year": "2014",
"Title": "effectivness of data..."
}
},
{
"_id": "59862",
"_score": 9.706333,
"_source": {
"ID": "59862",
"Year": "2007",
"Title": "best system to..."
}
},
{
"_id": "18501",
"_score": 9.685843,
"_source": {
"ID": "18501",
"Year": "2010",
"Title": "management of..."
}
}
]
}
私は、クエリを使用して、サンプル・データの上に取得していますし、それが期待通りです。しかし今、私がyear
のweight
を100に増やすと、3番目の4番目の結果と4番目の3番目の結果が予想されます。私は多くのことを試みましたが、私は何が間違っているのか分かりません。
注文の際に考慮したいフィールドをすべて追加する必要がありますか? –
注文の際に考慮するフィールドを追加する必要があります。 'field_value_factor'の' field'属性は1つのフィールドしか取りません。 2つのフィールドを組み合わせてカスタムロジックを追加したい場合は、ここで言及しているように 'script_score'を代わりに使用してください。https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score -query.html –
これで問題が解決した場合は、回答を承認済みとしてマークすることを忘れないでください。 –