[[search-request-rescore]] === Rescoring Rescoring can help to improve precision by reordering just the top (eg 100 - 500) documents returned by the <> and <> 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 <> is set to `scan` or `count`. ==== Query rescorer The query rescorer executes a second query only on the Top-K results returned by the <> and <> phases. The number of docs which will be examined on each shard can be controlled by the `window_size` parameter, which defaults to <>. 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 } } } ' --------------------------------------------------