![](/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.