Package org.apache.lucene.search.similarities

# Class ClassicSimilarity

java.lang.Object
org.apache.lucene.search.similarities.Similarity
org.apache.lucene.search.similarities.TFIDFSimilarity
org.apache.lucene.search.similarities.ClassicSimilarity

public class ClassicSimilarity extends TFIDFSimilarity
Expert: Historical scoring implementation. You might want to consider using `BM25Similarity` instead, which is generally considered superior to TF-IDF.

- ## Nested Class Summary

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

  `Similarity.BulkSimScorer, Similarity.SimScorer`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClassicSimilarity()`
  Default constructor: parameter-free
  `ClassicSimilarity(boolean discountOverlaps)`
  Primary constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `float`
  `idf(long docFreq, long docCount)`
  Implemented as `log((docCount+1)/(docFreq+1)) + 1`.
  `Explanation`
  `idfExplain(CollectionStatistics collectionStats, TermStatistics termStats)`
  Computes a score factor for a simple term and returns an explanation for that score factor.
  `float`
  `lengthNorm(int numTerms)`
  Implemented as `1/sqrt(length)`.
  `float`
  `tf(float freq)`
  Implemented as `sqrt(freq)`.
  `String`
  `toString()`

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

  `idfExplain, scorer`

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

  `computeNorm, getDiscountOverlaps`

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

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

- ## Constructor Details

  - ### ClassicSimilarity

    public ClassicSimilarity()
    Default constructor: parameter-free

  - ### ClassicSimilarity

    public ClassicSimilarity(boolean discountOverlaps)
    Primary constructor.

- ## Method Details

  - ### lengthNorm

    public float lengthNorm(int numTerms)
    Implemented as `1/sqrt(length)`.
    Specified by:
      `lengthNorm` in class `TFIDFSimilarity`
    Parameters:
      `numTerms` - the number of terms in the field, optionally `discounting overlaps`
    Returns:
      a length 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

  - ### idfExplain

    public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics termStats)
    Description copied from class: `TFIDFSimilarity`
    Computes a score factor for a simple term and returns an explanation for that score factor.

    The default implementation uses:

         idf(docFreq, docCount);

    Note that `CollectionStatistics.docCount()` is used instead of `IndexReader#numDocs()` because also `TermStatistics.docFreq()` is used, and when the latter is inaccurate, so is `CollectionStatistics.docCount()`, and in the same direction. In addition, `CollectionStatistics.docCount()` does not skew when fields are sparse.
    Overrides:
      `idfExplain` in class `TFIDFSimilarity`
    Parameters:
      `collectionStats` - collection-level statistics
      `termStats` - term-level statistics for the term
    Returns:
      an Explain object that includes both an idf score factor and an explanation for the term.

  - ### idf

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

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`