【发布时间】:2016-06-22 15:48:12
【问题描述】:
我正在尝试使用自定义函数进行搜索以修改文档分数。 我有一个存储在医院内的专业的映射,每个专业都有优先级: 类似的东西:
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"}
},
我有一个过滤查询来匹配搜索文本到任何专业。 就像我搜索肿瘤学一样,它会匹配,然后我指定了一个 script_score 来优先考虑该专业并将其添加到文档的最终分数中。
但是,它会优先遇到它遇到的第一个专业,即 10,匹配过滤器的得分为 1,最终得分为 11 而不是 21(肿瘤学的优先级 + 1过滤匹配)
【问题讨论】:
标签: elasticsearch