org.apache.lucene.queries

## Class CustomScoreQuery

- java.lang.Object
- - org.apache.lucene.search.Query
  - - org.apache.lucene.queries.CustomScoreQuery

- All Implemented Interfaces:
    Cloneable

      public class CustomScoreQuery
      extends Query
      implements Cloneable

  Query that sets document score as a programmatic function of several (sub) scores:
  1. the score of its subQuery (any query)
  2. (optional) the score of its `FunctionQuery` (or queries).
  Subclasses can modify the computation by overriding `getCustomScoreProvider(org.apache.lucene.index.LeafReaderContext)`.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CustomScoreQuery(Query subQuery)` Create a CustomScoreQuery over input subQuery.
    `CustomScoreQuery(Query subQuery, FunctionQuery... scoringQueries)` Create a CustomScoreQuery over input subQuery and a `FunctionQuery`.
    `CustomScoreQuery(Query subQuery, FunctionQuery scoringQuery)` Create a CustomScoreQuery over input subQuery and a `FunctionQuery`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `CustomScoreQuery` | `clone()`
    `Weight` | `createWeight(IndexSearcher searcher, boolean needsScores)`
    `boolean` | `equals(Object other)` Returns true if `o` is equal to this.
    `protected CustomScoreProvider` | `getCustomScoreProvider(LeafReaderContext context)` Returns a `CustomScoreProvider` that calculates the custom scores for the given `IndexReader`.
    `Query[]` | `getScoringQueries()` The scoring queries that only affect the score of CustomScoreQuery.
    `Query` | `getSubQuery()` The sub-query that CustomScoreQuery wraps, affecting both the score and which documents match.
    `int` | `hashCode()` Returns a hash code value for this object.
    `boolean` | `isStrict()` Checks if this is strict custom scoring.
    `String` | `name()` A short name of this query, used in `toString(String)`.
    `Query` | `rewrite(IndexReader reader)`
    `void` | `setStrict(boolean strict)` Set the strict mode of this query.
    `String` | `toString(String field)`

    - ### Methods inherited from class org.apache.lucene.search.Query

      `classHash, sameClassAs, toString`

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

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### CustomScoreQuery

          public CustomScoreQuery(Query subQuery)

      Create a CustomScoreQuery over input subQuery.
      Parameters:
        `subQuery` - the sub query whose scored is being customized. Must not be null.

    - #### CustomScoreQuery

          public CustomScoreQuery(Query subQuery,
                                  FunctionQuery scoringQuery)

      Create a CustomScoreQuery over input subQuery and a `FunctionQuery`.
      Parameters:
        `subQuery` - the sub query whose score is being customized. Must not be null.
        `scoringQuery` - a value source query whose scores are used in the custom score computation. This parameter is optional - it can be null.

    - #### CustomScoreQuery

          public CustomScoreQuery(Query subQuery,
                                  FunctionQuery... scoringQueries)

      Create a CustomScoreQuery over input subQuery and a `FunctionQuery`.
      Parameters:
        `subQuery` - the sub query whose score is being customized. Must not be null.
        `scoringQueries` - value source queries whose scores are used in the custom score computation. This parameter is optional - it can be null or even an empty array.

  - ### Method Detail

    - #### rewrite

          public Query rewrite(IndexReader reader)
                        throws IOException

      Overrides:
        `rewrite` in class `Query`
      Throws:
        `IOException`

    - #### clone

          public CustomScoreQuery clone()

      Overrides:
        `clone` in class `Object`

    - #### toString

          public String toString(String field)

      Specified by:
        `toString` in class `Query`

    - #### equals

          public boolean equals(Object other)

      Returns true if `o` is equal to this.
      Specified by:
        `equals` in class `Query`

    - #### hashCode

          public int hashCode()

      Returns a hash code value for this object.
      Specified by:
        `hashCode` in class `Query`

    - #### getCustomScoreProvider

          protected CustomScoreProvider getCustomScoreProvider(LeafReaderContext context)
                                                        throws IOException

      Returns a `CustomScoreProvider` that calculates the custom scores for the given `IndexReader`. The default implementation returns a default implementation as specified in the docs of `CustomScoreProvider`.
      Throws:
        `IOException`
      Since:
        2.9.2

    - #### createWeight

          public Weight createWeight(IndexSearcher searcher,
                                     boolean needsScores)
                              throws IOException

      Overrides:
        `createWeight` in class `Query`
      Throws:
        `IOException`

    - #### isStrict

          public boolean isStrict()

      Checks if this is strict custom scoring. In strict custom scoring, the `ValueSource` part does not participate in weight normalization. This may be useful when one wants full control over how scores are modified, and does not care about normalizing by the `ValueSource` part. One particular case where this is useful if for testing this query.

      Note: only has effect when the `ValueSource` part is not null.

    - #### setStrict

          public void setStrict(boolean strict)

      Set the strict mode of this query.
      Parameters:
        `strict` - The strict mode to set.
      See Also:
        `isStrict()`

    - #### getSubQuery

          public Query getSubQuery()

      The sub-query that CustomScoreQuery wraps, affecting both the score and which documents match.

    - #### getScoringQueries

          public Query[] getScoringQueries()

      The scoring queries that only affect the score of CustomScoreQuery.

    - #### name

          public String name()

      A short name of this query, used in `toString(String)`.

Copyright © 2000-2019 Apache Software Foundation. All Rights Reserved.