Better availability scoring
Opened this issue · 0 comments
dokterbob commented
{
"fields": [
"metadata.title",
"first-seen",
"last-seen"
],
"query": {
"bool": {
"must": {
"query_string": {
"query": "banner"
}
},
"should": {
"distance_feature": {
"field": "last-seen",
"pivot": "30d",
"origin": "now/h",
"boost": 3.0
}
}
}
},
"script_fields": {
"availability": {
"script": {
"lang": "expression",
"source": "doc['last-seen'].empty ? default : exp((ln(decay)/(scale*(doc['last-seen']-doc['first-seen'] + scale_offset)))*(now - doc['first-seen'].value))",
"params": {
"default": 0.0,
"scale_offset": 21600000,
"now": 1625393744150,
"scale": 0.4,
"decay": 0.9
}
}
}
},
"rescore": {
"window_size": 50,
"query": {
"rescore_query": {
"script_score": {
"query": {
"match_all": {}
},
"script": {
"lang": "expression",
"source": "doc['last-seen'].empty ? default : exp((ln(decay)/(scale*(doc['last-seen']-doc['first-seen'] + scale_offset)))*(now - doc['first-seen'].value))",
"params": {
"default": 0.0,
"scale_offset": 21600000,
"now": 1625393744150,
"scale": 0.4,
"decay": 0.9
}
}
}
},
"query_weight": 1.0,
"rescore_query_weight": 15
}
}
}