我在弹性搜索 script_score 中编写了一个脚本,用于计算当前日期和文档日期字段之间的年份间隔。
满分为100, doc ['date'] 距当前日期越近,获得的评分越高。
很显然,我的脚本是线性的。但是,与诸如高斯和线性衰减之类的内置衰减函数相比,该性能非常差。
我的衰减函数看起来比内置函数更有效。但是为什么表演如此异常。还是他们有什么办法可以提高我的脚本性能(糟糕的?)?
'script_score': {
'script': {
'lang': 'painless',
"params": {
'current_date': current_date
},
// pre compute numerical calculation to increase performance
// "source": "double d = 100.0 -((params.current_date-doc['date'].date.millis)/(3600000.0*24.0))/365.0*10.0); if(d<0||d>100){return 0.0;} else{return d;}"
"source": "double d = 100.0 -((params.current_date-doc['date'].date.millis)/3153600000.0); if(d<0||d>100){return 0.0;} else{return d;}"
}
}
'gauss': {
'date': {
'origin': "2018-07-16",
'offset': '180d',
'scale': '360d'
}
}
感谢您的所有建议。