是否可以为elasticsearch中的特定字段搜索提供修复分数

时间:2018-05-04 05:08:33

标签: elasticsearch

是否可以根据每场比赛给出修正分数。例如,一个字段匹配然后文档的增量分数减1,第二个字段匹配然后增加文档分数1,所以如果有一个匹配的字段,如果两个字段匹配则分数为1,那么分数将为2,依此类推......

1 个答案:

答案 0 :(得分:2)

修改查询的_score值的最佳工具是function_score查询。

Elasticsearch实际上提供了许多计算每场比赛得分的方法。您可以使用custom_score查询和脚本来访问特定数字字段的值。请考虑以下声明:

"script" : "_score * doc['my_numeric_field'].value"

在这里,我们通过将my_numeric_field的值与默认的_score相乘来给予权重。您还可以使用custom_filters_score_query,在其中应用过滤器来限制结果集,然后使用脚本或提升为任何与过滤器匹配的文档分配分数。同样,您可以将custom_boost_factor应用于任何查询,以将该查询的默认分数乘以提升值。在Elasticsearch的0.19.0版本中,有一个新的查询将所有这些组合到function_score查询中。