org.apache.lucene.search.similarities

## Class DefaultSimilarity

- java.lang.Object
- - org.apache.lucene.search.similarities.Similarity
  - - org.apache.lucene.search.similarities.TFIDFSimilarity
    - - org.apache.lucene.search.similarities.DefaultSimilarity

-     public class DefaultSimilarity
      extends TFIDFSimilarity

  Expert: Default scoring implementation.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.lucene.search.similarities.Similarity

      `Similarity.ExactSimScorer, Similarity.SimWeight, Similarity.SloppySimScorer`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `discountOverlaps` True if overlap tokens (tokens with a position of increment of zero) are discounted from the document's length.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultSimilarity()` Sole constructor: parameter-free

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `float` | `coord(int overlap, int maxOverlap)` Implemented as `overlap / maxOverlap`.
    `boolean` | `getDiscountOverlaps()` Returns true if overlap tokens are discounted from the document's length.
    `float` | `idf(long docFreq, long numDocs)` Implemented as `log(numDocs/(docFreq+1)) + 1`.
    `float` | `lengthNorm(FieldInvertState state)` Implemented as `state.getBoost()*lengthNorm(numTerms)`, where `numTerms` is `FieldInvertState.getLength()` if `setDiscountOverlaps(boolean)` is false, else it's `FieldInvertState.getLength()` - `FieldInvertState.getNumOverlap()`.
    `float` | `queryNorm(float sumOfSquaredWeights)` Implemented as `1/sqrt(sumOfSquaredWeights)`.
    `float` | `scorePayload(int doc, int start, int end, BytesRef payload)` The default implementation returns `1`
    `void` | `setDiscountOverlaps(boolean v)` Determines whether overlap tokens (Tokens with 0 position increment) are ignored when computing norm.
    `float` | `sloppyFreq(int distance)` Implemented as `1 / (distance + 1)`.
    `float` | `tf(float freq)` Implemented as `sqrt(freq)`.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.lucene.search.similarities.TFIDFSimilarity

      `computeNorm, computeWeight, decodeNormValue, encodeNormValue, exactSimScorer, idfExplain, idfExplain, sloppySimScorer, tf`

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

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

- - ### Field Detail

    - #### discountOverlaps

          protected boolean discountOverlaps

      True if overlap tokens (tokens with a position of increment of zero) are discounted from the document's length.

  - ### Constructor Detail

    - #### DefaultSimilarity

          public DefaultSimilarity()

      Sole constructor: parameter-free

  - ### Method Detail

    - #### coord

          public float coord(int overlap,
                    int maxOverlap)

      Implemented as `overlap / maxOverlap`.
      Specified by:
        `coord` in class `TFIDFSimilarity`
      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 float queryNorm(float sumOfSquaredWeights)

      Implemented as `1/sqrt(sumOfSquaredWeights)`.
      Specified by:
        `queryNorm` in class `TFIDFSimilarity`
      Parameters:
        `sumOfSquaredWeights` - the sum of the squares of query term weights
      Returns:
        a normalization factor for query weights

    - #### lengthNorm

          public float lengthNorm(FieldInvertState state)

      Implemented as `state.getBoost()*lengthNorm(numTerms)`, where `numTerms` is `FieldInvertState.getLength()` if `setDiscountOverlaps(boolean)` is false, else it's `FieldInvertState.getLength()` - `FieldInvertState.getNumOverlap()`.
      Specified by:
        `lengthNorm` in class `TFIDFSimilarity`
      Parameters:
        `state` - statistics of the current field (such as length, boost, etc)
      Returns:
        an index-time normalization value
      WARNING: This API is experimental and might change in incompatible ways in the next release.

    - #### tf

          public float tf(float freq)

      Implemented as `sqrt(freq)`.
      Specified by:
        `tf` in class `TFIDFSimilarity`
      Parameters:
        `freq` - the frequency of a term within a document
      Returns:
        a score factor based on a term's within-document frequency

    - #### sloppyFreq

          public float sloppyFreq(int distance)

      Implemented as `1 / (distance + 1)`.
      Specified by:
        `sloppyFreq` in class `TFIDFSimilarity`
      Parameters:
        `distance` - the edit distance of this sloppy phrase match
      Returns:
        the frequency increment for this match
      See Also:
        `PhraseQuery.setSlop(int)`

    - #### scorePayload

          public float scorePayload(int doc,
                           int start,
                           int end,
                           BytesRef payload)

      The default implementation returns `1`
      Specified by:
        `scorePayload` in class `TFIDFSimilarity`
      Parameters:
        `doc` - The docId currently being scored.
        `start` - The start position of the payload
        `end` - The end position of the payload
        `payload` - The payload byte array to be scored
      Returns:
        An implementation dependent float to be used as a scoring factor

    - #### idf

          public float idf(long docFreq,
                  long numDocs)

      Implemented as `log(numDocs/(docFreq+1)) + 1`.
      Specified by:
        `idf` in class `TFIDFSimilarity`
      Parameters:
        `docFreq` - the number of documents which contain the term
        `numDocs` - the total number of documents in the collection
      Returns:
        a score factor based on the term's document frequency

    - #### setDiscountOverlaps

          public void setDiscountOverlaps(boolean v)

      Determines whether overlap tokens (Tokens with 0 position increment) are ignored when computing norm. By default this is true, meaning overlap tokens do not count when computing norms.
      See Also:
        `TFIDFSimilarity.computeNorm(org.apache.lucene.index.FieldInvertState)`
      WARNING: This API is experimental and might change in incompatible ways in the next release.

    - #### getDiscountOverlaps

          public boolean getDiscountOverlaps()

      Returns true if overlap tokens are discounted from the document's length.
      See Also:
        `setDiscountOverlaps(boolean)`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

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