Search using LTR
Note
This feature was introduced in version 8.12.0 and is only available to certain subscription levels. For more information, see https://www.elastic.co/subscriptions.
Learning To Rank as a rescorer ¶
Once your LTR model is trained and deployed in Elasticsearch, it can be used as a rescorer in the search API:
GET my-index/_search
{
"query": { 1
"multi_match": {
"fields": ["title", "content"],
"query": "the quick brown fox"
}
},
"rescore": {
"learning_to_rank": {
"model_id": "ltr-model", 2
"params": { 3
"query_text": "the quick brown fox"
}
},
"window_size": 100 4
}
}
- First pass query providing documents to be rescored.
- The unique identifier of the trained model uploaded to Elasticsearch.
- Named parameters to be passed to the query templates used for feature.
- The number of documents that should be examined by the rescorer on each shard.
Known limitations ¶
Rescore window size ¶
Scores returned by LTR models are usually not comparable with the scores issued by the first pass query and can be lower than the non-rescored score. This can cause the non-rescored result document to be ranked higher than the rescored document. To prevent this, the window_size
parameter is mandatory for LTR rescorers and should be greater than or equal to from + size
.
Pagination ¶
When exposing pagination to users, window_size
should remain constant as each page is progressed by passing different from
values. Changing the window_size
can alter the top hits causing results to confusingly shift as the user steps through pages.
Negative scores ¶
Depending on how your model is trained, it’s possible that the model will return negative scores for documents. While negative scores are not allowed from first-stage retrieval and ranking, it is possible to use them in the LTR rescorer.