我一直試圖解決這個問題好幾個小時,但似乎沒有改變function_score衰變函數的返回值。它始終是1。它看起來不能得到我指定的字段的整數?Elasticsearch function_score decay不工作,總是返回1
的數據模型看起來像這樣(顯然假):
{
"basics": {
"name": "Mr Augustus Flybynight (Jim)",
"name_pref": "Jim",
"location": {
"city": "Melbourne",
"postalCode": "3040",
"meta": {
"country": "Australia"
},
"region": "VIC",
"address": "iytiytiyt, tyiuyti"
},
"email": "[email protected]",
"applicantNumber": "11882",
"name_first": "Augustus",
"meta": {
"alternateContact": "",
"lastModified": 1473353751,
"alternateName": "",
"notificationType": "-1",
"alternatePhones": [
],
"gender": "M"
},
"name_last": "Flybynight",
"phone": "44556677"
}
}
我有這個實體,唯一的區別是他們的時間戳(basics.meta.lastModified)的3個重複。我正在努力創造一個'更接近更好'的功能分數,讓最新的技術達到頂峯。我們尚未將時間戳映射爲日期,但將其映射爲整數。
當試圖以下列
{
"query": {
"function_score": {
"functions": [
{
"gauss": {
"basics.meta.lastModified": {
"origin": 1474868635, // now
"offset": 86400, // one day
"scale": 604800, // seven days
"decay": 0.5
}
},
"weight": 2
}
],
"query": {
"bool": {
"should": [
{
"match": {
"_all": "augustus flybynight"
}
},
{
"match": {
"basics.all_names.all_names_identifier_whitespace": {
"query": "augustus flybynight",
"boost": 2
}
}
},
{
"match": {
"basics.email.email_identifier_keyword": {
"query": "augustus flybynight",
"boost": 3
}
}
},
{
"match": {
"basics.applicantNumber.applicantNumber_identifier_keyword": {
"query": "augustus flybynight",
"boost": 3
}
}
},
{
"wildcard": {
"basics.email.email_identifier_keyword": {
"wildcard": "augustus flybynight*",
"boost": 2
}
}
},
{
"wildcard": {
"basics.all_names.all_names_identifier_whitespace": {
"wildcard": "augustus flybynight*"
}
}
}
],
"must": []
}
}
}
},
"size": 25,
"from": 0,
"min_score": 0.2
}
查詢但這總是返回「1」的功能評分,然後乘以該查詢並不會對其產生影響。這是最奇怪的事情。
當的解釋看,這就是所返回的內容:
{
"value": 1,
"description": "min of:",
"details": [
{
"value": 1,
"description": "product of:",
"details": [
{
"value": 1,
"description": "Function for field basics.meta.lastModified:",
"details": [
{
"value": 1,
"description": "max(0.0, ((2.0 - MIN[0.0])/2.0)",
"details": [
]
}
]
},
{
"value": 1,
"description": "weight",
"details": [
]
}
]
},
{
"value": 3.4028235e+38,
"description": "maxBoost",
"details": [
]
}
]
}
好像「MIN [0.0]」是應該返回時間戳的一部分,但它不是,而不是返回0,使衰變函數總是1.如果我使衰減參數更嚴格,如原點:0,偏移量:0,比例尺:1和衰減:0.5,我希望function_score接近0,但它仍然是1.
請幫忙。我一直在嘗試一切,網上似乎沒有很多例子。任何建議都會受到歡迎。
這可能是由於嵌套字段。這看起來像一個類似的問題:http://stackoverflow.com/a/34467377/689625 – jay
@jay是的,這是。一個糟糕的映射是罪魁禍首。不能相信這花費了我很長時間才找到它,而ES沒有提及它:/ –