Package org.apache.lucene.search.similarities

# Class PerFieldSimilarityWrapper

java.lang.Object
org.apache.lucene.search.similarities.Similarity
org.apache.lucene.search.similarities.PerFieldSimilarityWrapper

public abstract class PerFieldSimilarityWrapper extends Similarity
Provides the ability to use a different `Similarity` for different fields.

Subclasses should implement `get(String)` to return an appropriate Similarity (for example, using field-specific parameter values) for the field.

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.similarities.Similarity

  `Similarity.BulkSimScorer, Similarity.SimScorer`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PerFieldSimilarityWrapper()`
  Sole constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final long`
  `computeNorm(FieldInvertState state)`
  Computes the normalization value for a field at index-time.
  `abstract Similarity`
  `get(String name)`
  Returns a `Similarity` for scoring a field.
  `final Similarity.SimScorer`
  `scorer(float boost, CollectionStatistics collectionStats, TermStatistics... termStats)`
  Compute any collection-level weight (e.g.

  ### Methods inherited from class org.apache.lucene.search.similarities.Similarity

  `getDiscountOverlaps`

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

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

- ## Constructor Details

  - ### PerFieldSimilarityWrapper

    public PerFieldSimilarityWrapper()
    Sole constructor. (For invocation by subclass constructors, typically implicit.)

- ## Method Details

  - ### computeNorm

    public final long computeNorm(FieldInvertState state)
    Description copied from class: `Similarity`
    Computes the normalization value for a field at index-time.

    The default implementation uses `SmallFloat.intToByte4(int)` to encode the number of terms as a single byte.

    WARNING: The default implementation is used by Lucene's supplied Similarity classes, which means you can change the Similarity at runtime without reindexing. If you override this method, you'll need to re-index documents for it to take effect.

    Matches in longer fields are less precise, so implementations of this method usually set smaller values when `state.getLength()` is large, and larger values when `state.getLength()` is small.

    Note that for a given term-document frequency, greater unsigned norms must produce scores that are lower or equal, ie. for two encoded norms `n1` and `n2` so that `Long.compareUnsigned(n1, n2) > 0` then `SimScorer.score(freq, n1) <= SimScorer.score(freq, n2)` for any legal `freq`.

    `0` is not a legal norm, so `1` is the norm that produces the highest scores.

    Overrides:
      `computeNorm` in class `Similarity`
    Parameters:
      `state` - accumulated state of term processing for this field
    Returns:
      computed norm value

  - ### scorer

    public final Similarity.SimScorer scorer(float boost, CollectionStatistics collectionStats, TermStatistics... termStats)
    Description copied from class: `Similarity`
    Compute any collection-level weight (e.g. IDF, average document length, etc) needed for scoring a query.
    Specified by:
      `scorer` in class `Similarity`
    Parameters:
      `boost` - a multiplicative factor to apply to the produces scores
      `collectionStats` - collection-level statistics, such as the number of tokens in the collection.
      `termStats` - term-level statistics, such as the document frequency of a term across the collection.
    Returns:
      SimWeight object with the information this Similarity needs to score a query.

  - ### get

    public abstract Similarity get(String name)
    Returns a `Similarity` for scoring a field.