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
`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
`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`