![](/img/trans.png)
[英]Boosting on an elasticsearch field and words in the field within the query
[英]tf/idf boosting within field
我的用例是这样的:对于查询iphone charger
,与名称iphone charger
相比,具有name
, iphone charger coupons
结果与查询的相关性更高,这可能是因为description
和其他领域的匹配更好。 除非我大幅度改变重要性,否则提升name
字段不会有多大帮助。 我真正需要的是name
字段中的tf/idf
Boost
引用elasticsearch 博客 :
字段中术语的频率会被字段的长度抵消。 但是,实际评分功能以相同的方式对待所有字段。 它将所有标题字段(因为它们很短)比所有正文字段(因为它们很长)更重要。
我需要为特定领域提升这一more important
价值。 我们可以用功能评分或其他方式做到这一点吗?
在长度A一个术语差不多以评分算法的差的(并且,实际上,可完全消失由于在长度规范不精确性)。 如果在其他领域有成功,您将有很多得分元素需要对抗。
dis_max可能是解决此问题的合理方法。 而不是您试图克服的所有累加分数和坐标,它只会选择最匹配子查询的分数。 如果根据标题增强查询,则可以确保强烈推荐匹配项。
然后,您可以分配一个“ tie_breaker”,以便仅当“标题”得分并列时才考虑描述子查询的得分。
{
"dis_max" : {
"tie_breaker" : 0.2,
"queries" : [
{
"terms" : {
"age" : ["iphone", "charger"],
"boost" : 10
}
},
{
"terms" : {
"description" : ["iphone", "charger"]
}
}
]
}
}
如果您完全知道何时与整个字段完全匹配 ,则另一种处理此类问题的方法是分别索引该字段的未标记版本,并同时查询该字段。 与该字段的未标记版本的任何匹配将再次是整个字段内容的完全匹配。 这样可以避免您需要依靠长度标准来进行确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.