私はドキュメントのスコアを変更するカスタム関数で検索しようとしています。 私は病院内に格納さ特選マッピングを持っていると、すべての専門はそれに優先順位がありますよう 何か:エラスティックサーチカスタム機能スコア
hospital:{
name: 'Fortis',
specialities: [
{
name: 'Cardiology',
priority: 10
},
{
name: 'Oncology',
priority: 15
}
]
}
は、今私は、関数のスコアを持っている:
functions: [{
filter: {terms: {'specialities.name' => params[:search_text]}},
script_score: {script: "_score * doc['specialities.priority'].value"}
},
私はフィルタクエリを持っています検索テキストを任意の専門分野に一致させることができます。 私がOncologyを検索した場合と同じように、それが一致すると、その専門分野の優先順位をとり、最終スコアに追加するscript_scoreを指定しました。
しかし、それはそれが10とマッチドフィルタ1のスコアであり、エンドスコアが11ではない21(フィルタ一致のため腫瘍 + 1の優先順位)が遭遇する最初の専門の優先権を取っている