У нас есть запрос ElasticSearch, который выглядит следующим образом:
{
"size": 150,
"query": {
"bool": {
"must": {
"nested": {
"path": "entities",
"score_mode": "max",
"query": {
"match": {
"entities.name": "Donald Trump"
}
}
}
}
}
},
"rescore": [{
"window_size": 3000,
"query": {
"score_mode": "max",
"rescore_query": {
"nested": {
"path": "entities",
"score_mode": "max",
"query": {
"function_score": {
"doc_score": {
"fields": {
"entities.name": {
"query_value": "Donald Trump"
}
}
}
}
}
}
},
"query_weight": 0,
"rescore_query_weight": 1
}
}
]
}
FYI, предложение rescore
связано с подключаемым модулем ElasticSearch, который называется Rosette RNI-ES (https://www.rosette.com/elastic/#identity-resolution), которыйприсваивает оценку релевантности соответствия имен всем результатам.
Мне интересно, каков синтаксис, который мне нужно добавить к этому запросу:
Только возврат50 лучших результатов с наибольшим количеством баллов
Возвращать только те результаты, которые превышают 90%, совпадают в предложении rescore.