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.

  For Lucene 6, you should pass a default similarity that is used for all non field-specific methods. From Lucene 7 on, this is no longer required.

  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.SimScorer, Similarity.SimWeight`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Similarity` | `defaultSim` Default similarity used for query norm and coordination factors.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PerFieldSimilarityWrapper()` Deprecated. specify a default similarity for non field-specific calculations.
    `PerFieldSimilarityWrapper(Similarity defaultSim)` Constructor taking a default similarity for all non-field specific calculations.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `computeNorm(FieldInvertState state)` Computes the normalization value for a field, given the accumulated state of term processing for this field (see `FieldInvertState`).
    `Similarity.SimWeight` | `computeWeight(CollectionStatistics collectionStats, TermStatistics... termStats)` Compute any collection-level weight (e.g.
    `float` | `coord(int overlap, int maxOverlap)` Hook to integrate coordinate-level matching.
    `abstract Similarity` | `get(String name)` Returns a `Similarity` for scoring a field.
    `float` | `queryNorm(float valueForNormalization)` Computes the normalization value for a query given the sum of the normalized weights `Similarity.SimWeight.getValueForNormalization()` of each of the query terms.
    `Similarity.SimScorer` | `simScorer(Similarity.SimWeight weight, LeafReaderContext context)` Creates a new `Similarity.SimScorer` to score matching documents from a segment of the inverted index.

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

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

- - ### Field Detail

    - #### defaultSim

          protected final Similarity defaultSim

      Default similarity used for query norm and coordination factors.

  - ### Constructor Detail

    - #### PerFieldSimilarityWrapper

          public PerFieldSimilarityWrapper(Similarity defaultSim)

      Constructor taking a default similarity for all non-field specific calculations.
      Parameters:
        `defaultSim` - is used for all non field-specific calculations, like `queryNorm(float)` and `coord(int, int)`.

    - #### PerFieldSimilarityWrapper

          @Deprecated
          public PerFieldSimilarityWrapper()

      Deprecated. specify a default similarity for non field-specific calculations.
      Backwards compatibility constructor for 6.x series that creates a per-field similarity where all non field-specific methods return a constant (1).

      From Lucene 7 on, this will get the default again, because coordination factors and query normalization will be removed.

  - ### Method Detail

    - #### computeNorm

          public final long computeNorm(FieldInvertState state)

      Description copied from class: `Similarity`
      Computes the normalization value for a field, given the accumulated state of term processing for this field (see `FieldInvertState`).

      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.

      Specified by:
        `computeNorm` in class `Similarity`
      Parameters:
        `state` - current processing state for this field
      Returns:
        computed norm value

    - #### computeWeight

          public final Similarity.SimWeight computeWeight(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:
        `computeWeight` in class `Similarity`
      Parameters:
        `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.

    - #### simScorer

          public final Similarity.SimScorer simScorer(Similarity.SimWeight weight,
                                                      LeafReaderContext context)
                                               throws IOException

      Description copied from class: `Similarity`
      Creates a new `Similarity.SimScorer` to score matching documents from a segment of the inverted index.
      Specified by:
        `simScorer` in class `Similarity`
      Parameters:
        `weight` - collection information from `Similarity.computeWeight(CollectionStatistics, TermStatistics...)`
        `context` - segment of the inverted index to be scored.
      Returns:
        SloppySimScorer for scoring documents across `context`
      Throws:
        `IOException` - if there is a low-level I/O error

    - #### coord

          public final float coord(int overlap,
                                   int maxOverlap)

      Description copied from class: `Similarity`
      Hook to integrate coordinate-level matching.

      By default this is disabled (returns `1`), as with most modern models this will only skew performance, but some implementations such as `TFIDFSimilarity` override this.

      Overrides:
        `coord` in class `Similarity`
      Parameters:
        `overlap` - the number of query terms matched in the document
        `maxOverlap` - the total number of terms in the query
      Returns:
        a score factor based on term overlap with the query

    - #### queryNorm

          public final float queryNorm(float valueForNormalization)

      Description copied from class: `Similarity`
      Computes the normalization value for a query given the sum of the normalized weights `Similarity.SimWeight.getValueForNormalization()` of each of the query terms. This value is passed back to the weight (`Similarity.SimWeight.normalize(float, float)` of each query term, to provide a hook to attempt to make scores from different queries comparable.

      By default this is disabled (returns `1`), but some implementations such as `TFIDFSimilarity` override this.

      Overrides:
        `queryNorm` in class `Similarity`
      Parameters:
        `valueForNormalization` - the sum of the term normalization values
      Returns:
        a normalization factor for query weights

    - #### get

          public abstract Similarity get(String name)

      Returns a `Similarity` for scoring a field.

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