我们使用AWS Elasticsearch,它支持从版本5开始的无痛脚本。 我需要在自定义分数脚本中访问term positions/offsets。
在旧的Groovy脚本中,它起作用了:
"query": {
"function_score": {
"query": {"match_phrase": {"text": "life"} },
"script_score": {
"script": {
"lang": "groovy",
"inline": "termInfo=_index['text'].get('life', _POSITIONS);"
}
},
"boost_mode": "multiply"
}
}
但它不适用于Painless。它返回'编译错误'。
答案 0 :(得分:1)
我希望这会有所帮助,我希望根据文档中查询文本的位置获得分数
{
"query": {
"bool": {
"should": [
{
"function_score": {
"query": {
"match_phrase_prefix": {
"field": "query"
}
},
"script_score": {
"script": {
"lang": "painless",
"source": "(params['_source']['field'].toLowerCase().indexOf('query'.toLowerCase())+1)"
}
},
"boost_mode": "max"
}
}
]
}
}
}