OpenSearch/docs/reference/search/request/rescore.asciidoc

70 lines
2.2 KiB
Plaintext
Raw Normal View History

[[search-request-rescore]]
=== Rescoring
Rescoring can help to improve precision by reordering just the top (eg
100 - 500) documents returned by the
<<search-request-query,`query`>> and
<<search-request-filter,`filter`>> phases, using a
secondary (usually more costly) algorithm, instead of applying the
costly algorithm to all documents in the index.
A `rescore` request is executed on each shard before it returns its
results to be sorted by the node handling the overall search request.
Currently the rescore API has only one implementation: the query
rescorer, which uses a query to tweak the scoring. In the future,
alternative rescorers may be made available, for example, a pair-wise rescorer.
*Note:* the `rescore` phase is not executed when
<<search-request-search-type,`search_type`>> is set
to `scan` or `count`.
==== Query rescorer
The query rescorer executes a second query only on the Top-K results
returned by the <<search-request-query,`query`>> and
<<search-request-filter,`filter`>> phases. The
number of docs which will be examined on each shard can be controlled by
the `window_size` parameter, which defaults to
<<search-request-from-size,`from` and `size`>>.
The scores from the original query and the rescore query are combined
linearly to produce the final `_score` for each document. The relative
importance of the original query and of the rescore query can be
controlled with the `query_weight` and `rescore_query_weight`
respectively. Both default to `1`.
For example:
[source,js]
--------------------------------------------------
curl -s -XPOST 'localhost:9200/_search' -d '{
"query" : {
"match" : {
"field1" : {
"operator" : "or",
"query" : "the quick brown",
"type" : "boolean"
}
}
},
"rescore" : {
"window_size" : 50,
"query" : {
"rescore_query" : {
"match" : {
"field1" : {
"query" : "the quick brown",
"type" : "phrase",
"slop" : 2
}
}
},
"query_weight" : 0.7,
"rescore_query_weight" : 1.2
}
}
}
'
--------------------------------------------------