我正試圖將相關性評分和按另一欄位排序結合起來,但我不確定該如何做。
我的檔案中有許多文本欄位,我想根據這些欄位來搜索一個術語。 該術語可能出現在檔案中的多個欄位中。
我正在使用下面的方法來進行基本的過濾:
我還有一個欄位popularityScore,用來衡量一個檔案的受歡迎程度。 我試著用它來進行排序:
通過這樣做,查詢的相關性變得無關緊要,如果沒有它,相關性的微小偏差就會導致非常受歡迎的檔案顯示得更低。 我有沒有辦法把popularScore和relevance結合起來,或者把其中一個刪掉(例如,只回傳relevance > x,然后對這些進行排序)?
uj5u.com熱心網友回復: 你可以使用欄位function_score和field_value_factor "query_query "和 "query "是兩個概念。
"query_string": {
"query": "Burger",
"default_field": "*"
}
}
"query": {
"query_string": {
"query": "Burger",
"default_field": "*"
}
},
"排序"。[
{
"人氣得分"。{
"順序": "desc"
}
}
]
}
{
"查詢"。{
"function_score": {
"查詢"。{
"query_string": {
"query": "Burger",
"default_field": "*"
}
},
"功能": [
{
"field_value_factor": {
"欄位": "popularScore",
"因素": 1.2,
"修改器": "sqrt",
"缺失": 1
}
}
],
"boost_mode": "sum"
}
}
}
結果
"hits" : [
{
"_index" : "index35",
"_type" : "_doc",
"_id" : "gLyT6XsBQ6SrO4ATYGUQ",
"_score" : 3.9282646,
"_source" : {
"標題" : "Burger",
"popularScore" : 12
}
},
{
"_index" : "index35",
"_type" : "_doc",
"_id" : "fryS6XsBQ6SrO4AT_WXV",
"_score" : 3.5976331,
"_source" : {
"title" : "Burger",
"popularScore" : 10
}
},
{
"_index" : "index35",
"_type" : "_doc",
"_id" : "f7yT6XsBQ6SrO4ATC2WI",
"_score" : 3.231918,
"_source" : {
"標題" : "Burger",
"popularScore" : 8
}
}
field_value_factor函式允許你使用檔案中的一個欄位來影響得分。
function_score = sqrt(1.2 * doc['popularScore'].value)"
document_score = function_score query_score。
你可以根據你想影響查詢分數的程度來選擇 "修改器"。你可以在field_value_factor檔案中找到多個選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315177.html
標籤:
