org.apache.lucene.search

## Class QueryRescorer

- java.lang.Object
- - org.apache.lucene.search.Rescorer
  - - org.apache.lucene.search.QueryRescorer

    public abstract class QueryRescorer
    extends Rescorer

A `Rescorer` that uses a provided Query to assign scores to the first-pass hits.

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Constructor Summary

Constructors
Constructor and Description
`QueryRescorer(Query query)` Sole constructor, passing the 2nd pass query to assign scores to the 1st pass hits.

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`protected abstract float` `combine(float firstPassScore, boolean secondPassMatches, float secondPassScore)` Implement this in a subclass to combine the first pass and second pass scores.
`Explanation` `explain(IndexSearcher searcher, Explanation firstPassExplanation, int docID)` Explains how the score for the specified document was computed.
`TopDocs` `rescore(IndexSearcher searcher, TopDocs firstPassTopDocs, int topN)` Rescore an initial first-pass `TopDocs`.
`static TopDocs` `rescore(IndexSearcher searcher, TopDocs topDocs, Query query, double weight, int topN)` Sugar API, calling {#rescore} using a simple linear combination of firstPassScore + weight * secondPassScore

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### QueryRescorer

    public QueryRescorer(Query query)

Sole constructor, passing the 2nd pass query to assign scores to the 1st pass hits.

### Method Detail

#### combine

    protected abstract float combine(float firstPassScore,
                                     boolean secondPassMatches,
                                     float secondPassScore)

Implement this in a subclass to combine the first pass and second pass scores. If secondPassMatches is false then the second pass query failed to match a hit from the first pass query, and you should ignore the secondPassScore.

#### rescore

    public TopDocs rescore(IndexSearcher searcher,
                           TopDocs firstPassTopDocs,
                           int topN)
                    throws IOException

Description copied from class: `Rescorer`
Rescore an initial first-pass `TopDocs`.

Specified by:
  `rescore` in class `Rescorer`
Parameters:
  `searcher` - `IndexSearcher` used to produce the first pass topDocs
  `firstPassTopDocs` - Hits from the first pass search. It's very important that these hits were produced by the provided searcher; otherwise the doc IDs will not match!
  `topN` - How many re-scored hits to return
Throws:
  `IOException`

#### explain

    public Explanation explain(IndexSearcher searcher,
                               Explanation firstPassExplanation,
                               int docID)
                        throws IOException

Description copied from class: `Rescorer`
Explains how the score for the specified document was computed.

Specified by:
  `explain` in class `Rescorer`
Throws:
  `IOException`

#### rescore

    public static TopDocs rescore(IndexSearcher searcher,
                                  TopDocs topDocs,
                                  Query query,
                                  double weight,
                                  int topN)
                           throws IOException

Sugar API, calling {#rescore} using a simple linear combination of firstPassScore + weight * secondPassScore

Throws:
  `IOException`