Package org.apache.lucene.search.highlight

# Class QueryScorer

java.lang.Object
org.apache.lucene.search.highlight.QueryScorer

All Implemented Interfaces:
  `Scorer`

public class QueryScorer extends Object implements Scorer
`Scorer` implementation which scores text fragments by the number of unique query terms found. This class converts appropriate `Query`s to `SpanQuery`s and attempts to score only those terms that participated in generating the 'hit' on the document.

## Constructor Summary

Constructors
Constructor
Description
`QueryScorer(WeightedSpanTerm[] weightedTerms)`
`QueryScorer(Query query)`
`QueryScorer(Query query, String field)`
`QueryScorer(Query query, String field, String defaultField)`
`QueryScorer(Query query, IndexReader reader, String field)`
`QueryScorer(Query query, IndexReader reader, String field, String defaultField)`

## Method Summary

Modifier and Type
Method
Description
`float`
`getFragmentScore()`
Called when the `Highlighter` has no more tokens for the current fragment - the Scorer returns the weighting it has derived for the most recent fragment, typically based on the results of `Scorer.getTokenScore()`.
`float`
`getMaxTermWeight()`
`float`
`getTokenScore()`
Called for each token in the current fragment.
`WeightedSpanTerm`
`getWeightedSpanTerm(String token)`
Retrieve the `WeightedSpanTerm` for the specified token.
`TokenStream`
`init(TokenStream tokenStream)`
Called to init the Scorer with a `TokenStream`.
`boolean`
`isExpandMultiTermQuery()`
`boolean`
`isUsePayloads()`
Whether or not we should capture payloads in `MemoryIndex` at each position so that queries can access them.
`protected WeightedSpanTermExtractor`
`newTermExtractor(String defaultField)`
`void`
`setExpandMultiTermQuery(boolean expandMultiTermQuery)`
Controls whether or not multi-term queries are expanded against a `MemoryIndex` `IndexReader`.
`void`
`setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)`
`void`
`setUsePayloads(boolean usePayloads)`
`void`
`setWrapIfNotCachingTokenFilter(boolean wrap)`
By default, `TokenStream`s that are not of the type `CachingTokenFilter` are wrapped in a `CachingTokenFilter` to ensure an efficient reset - if you are already using a different caching `TokenStream` impl and you don't want it to be wrapped, set this to false.
`void`
`startFragment(TextFragment newFragment)`
Called when a new fragment is started for consideration.

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

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

## Constructor Details

### QueryScorer

public QueryScorer(Query query)

Parameters:
  `query` - Query to use for highlighting

### QueryScorer

public QueryScorer(Query query, String field)

Parameters:
  `query` - Query to use for highlighting
  `field` - Field to highlight - pass null to ignore fields

### QueryScorer

public QueryScorer(Query query, IndexReader reader, String field)

Parameters:
  `query` - Query to use for highlighting
  `reader` - `IndexReader` to use for quasi tf/idf scoring
  `field` - Field to highlight - pass null to ignore fields

### QueryScorer

public QueryScorer(Query query, IndexReader reader, String field, String defaultField)

Parameters:
  `query` - to use for highlighting
  `reader` - `IndexReader` to use for quasi tf/idf scoring
  `field` - to highlight - pass null to ignore fields

### QueryScorer

public QueryScorer(Query query, String field, String defaultField)

Parameters:
  `defaultField` - - The default field for queries with the field name unspecified

### QueryScorer

public QueryScorer(WeightedSpanTerm[] weightedTerms)

Parameters:
  `weightedTerms` - an array of pre-created `WeightedSpanTerm`s

## Method Details

### getFragmentScore

public float getFragmentScore()
Description copied from interface: `Scorer`
Called when the `Highlighter` has no more tokens for the current fragment - the Scorer returns the weighting it has derived for the most recent fragment, typically based on the results of `Scorer.getTokenScore()`.

Specified by:
  `getFragmentScore` in interface `Scorer`

### getMaxTermWeight

public float getMaxTermWeight()

Returns:
  The highest weighted term (useful for passing to GradientFormatter to set top end of coloring scale).

### getTokenScore

public float getTokenScore()
Description copied from interface: `Scorer`
Called for each token in the current fragment. The `Highlighter` will increment the `TokenStream` passed to init on every call.

Specified by:
  `getTokenScore` in interface `Scorer`
Returns:
  a score which is passed to the `Highlighter` class to influence the mark-up of the text (this return value is NOT used to score the fragment)

### init

public TokenStream init(TokenStream tokenStream) throws IOException
Description copied from interface: `Scorer`
Called to init the Scorer with a `TokenStream`. You can grab references to the attributes you are interested in here and access them from `Scorer.getTokenScore()`.

Specified by:
  `init` in interface `Scorer`
Parameters:
  `tokenStream` - the `TokenStream` that will be scored.
Returns:
  either a `TokenStream` that the Highlighter should continue using (eg if you read the tokenSream in this method) or null to continue using the same `TokenStream` that was passed in.
Throws:
  `IOException` - If there is a low-level I/O error

### getWeightedSpanTerm

public WeightedSpanTerm getWeightedSpanTerm(String token)
Retrieve the `WeightedSpanTerm` for the specified token. Useful for passing Span information to a `Fragmenter`.

Parameters:
  `token` - to get `WeightedSpanTerm` for
Returns:
  WeightedSpanTerm for token

### newTermExtractor

protected WeightedSpanTermExtractor newTermExtractor(String defaultField)

### startFragment

public void startFragment(TextFragment newFragment)
Description copied from interface: `Scorer`
Called when a new fragment is started for consideration.

Specified by:
  `startFragment` in interface `Scorer`
Parameters:
  `newFragment` - the fragment that will be scored next

### isExpandMultiTermQuery

public boolean isExpandMultiTermQuery()

Returns:
  true if multi-term queries should be expanded

### setExpandMultiTermQuery

public void setExpandMultiTermQuery(boolean expandMultiTermQuery)
Controls whether or not multi-term queries are expanded against a `MemoryIndex` `IndexReader`.

Parameters:
  `expandMultiTermQuery` - true if multi-term queries should be expanded

### isUsePayloads

public boolean isUsePayloads()
Whether or not we should capture payloads in `MemoryIndex` at each position so that queries can access them. This does not apply to term vector based TokenStreams, which support payloads only when the term vector has them.

### setUsePayloads

public void setUsePayloads(boolean usePayloads)

### setWrapIfNotCachingTokenFilter

public void setWrapIfNotCachingTokenFilter(boolean wrap)
By default, `TokenStream`s that are not of the type `CachingTokenFilter` are wrapped in a `CachingTokenFilter` to ensure an efficient reset - if you are already using a different caching `TokenStream` impl and you don't want it to be wrapped, set this to false. Note that term-vector based tokenstreams are detected and won't be wrapped either.

### setMaxDocCharsToAnalyze

public void setMaxDocCharsToAnalyze(int maxDocCharsToAnalyze)