Package org.apache.lucene.queries.function

# Class ValueSourceScorer

java.lang.Object
org.apache.lucene.search.Scorable
org.apache.lucene.search.Scorer
org.apache.lucene.queries.function.ValueSourceScorer

public abstract class ValueSourceScorer extends Scorer
`Scorer` which returns the result of `FunctionValues.floatVal(int)` as the score for a document, and which filters out documents that don't match `matches(int)`. This Scorer has a `TwoPhaseIterator`. This is similar to `FunctionQuery`, with an added filter.

Note: If the scores are needed, then the underlying value will probably be fetched/computed twice -- once to filter and next to return the score. If that's non-trivial then consider wrapping it in an implementation that will cache the current value.

See Also:
  - `FunctionQuery`
WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.apache.lucene.search.Scorable

  `Scorable.ChildScorable`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final FunctionValues`
  `values`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `ValueSourceScorer(LeafReaderContext readerContext, FunctionValues values)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `docID()`
  `float`
  `getMaxScore(int upTo)`
  `DocIdSetIterator`
  `iterator()`
  `protected float`
  `matchCost()`
  Cost evaluation function which defines the cost of access for the TwoPhaseIterator for this class This method should be overridden for specifying custom cost methods.
  `abstract boolean`
  `matches(int doc)`
  Override to decide if this document matches.
  `float`
  `score()`
  `TwoPhaseIterator`
  `twoPhaseIterator()`

  ### Methods inherited from class org.apache.lucene.search.Scorer

  `advanceShallow, nextDocsAndScores`

  ### Methods inherited from class org.apache.lucene.search.Scorable

  `getChildren, setMinCompetitiveScore, smoothingScore`

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

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

- ## Field Details

  - ### values

    protected final FunctionValues values

- ## Constructor Details

  - ### ValueSourceScorer

    protected ValueSourceScorer(LeafReaderContext readerContext, FunctionValues values)

- ## Method Details

  - ### matches

    public abstract boolean matches(int doc) throws IOException
    Override to decide if this document matches. It's called by `TwoPhaseIterator.matches()`.
    Throws:
      `IOException`

  - ### iterator

    public DocIdSetIterator iterator()
    Specified by:
      `iterator` in class `Scorer`

  - ### twoPhaseIterator

    public TwoPhaseIterator twoPhaseIterator()
    Overrides:
      `twoPhaseIterator` in class `Scorer`

  - ### docID

    public int docID()
    Specified by:
      `docID` in class `Scorer`

  - ### score

    public float score() throws IOException
    Specified by:
      `score` in class `Scorable`
    Throws:
      `IOException`

  - ### getMaxScore

    public float getMaxScore(int upTo) throws IOException
    Specified by:
      `getMaxScore` in class `Scorer`
    Throws:
      `IOException`

  - ### matchCost

    protected float matchCost()
    Cost evaluation function which defines the cost of access for the TwoPhaseIterator for this class This method should be overridden for specifying custom cost methods. Used by `TwoPhaseIterator.matchCost()` for the instance owned by this class
    Returns:
      cost of access
    WARNING: This API is experimental and might change in incompatible ways in the next release.