Package org.apache.lucene.search.similarities

# Class LMSimilarity

java.lang.Object
org.apache.lucene.search.similarities.Similarity
org.apache.lucene.search.similarities.SimilarityBase
org.apache.lucene.search.similarities.LMSimilarity

Direct Known Subclasses:
  `IndriDirichletSimilarity`, `LMDirichletSimilarity`, `LMJelinekMercerSimilarity`

public abstract class LMSimilarity extends SimilarityBase
Abstract superclass for language modeling Similarities. The following inner types are introduced:

- `LMSimilarity.LMStats`, which defines a new statistic, the probability that the collection language model generates the current term;
- `LMSimilarity.CollectionModel`, which is a strategy interface for object that compute the collection language model `p(w|C)`;
- `LMSimilarity.DefaultCollectionModel`, an implementation of the former, that computes the term probability as the number of occurrences of the term in the collection, divided by the total number of tokens.

WARNING: This API is experimental and might change in incompatible ways in the next release.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`LMSimilarity.CollectionModel`
A strategy for computing the collection language model.
`static class`
`LMSimilarity.DefaultCollectionModel`
Models `p(w|C)` as the number of occurrences of the term in the collection, divided by the total number of tokens `+ 1`.
`static class`
`LMSimilarity.LMStats`
Stores the collection distribution of the current term.

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

`Similarity.SimScorer`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final LMSimilarity.CollectionModel`
`collectionModel`
The collection model.

## Constructor Summary

Constructors
Constructor
Description
`LMSimilarity()`
Creates a new instance with the default collection language model.
`LMSimilarity(LMSimilarity.CollectionModel collectionModel)`
Creates a new instance with the specified collection language model.
`LMSimilarity(LMSimilarity.CollectionModel collectionModel, boolean discountOverlaps)`
Creates a new instance with the specified collection language model and discountOverlaps.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`explain(List<Explanation> subExpls, BasicStats stats, double freq, double docLen)`
Subclasses should implement this method to explain the score.
`protected void`
`fillBasicStats(BasicStats stats, CollectionStatistics collectionStats, TermStatistics termStats)`
Computes the collection probability of the current term in addition to the usual statistics.
`abstract String`
`getName()`
Returns the name of the LM method.
`protected BasicStats`
`newStats(String field, double boost)`
Factory method to return a custom stats object
`String`
`toString()`
Returns the name of the LM method.

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

`explain, log2, score, 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`

## Field Details

### collectionModel

protected final LMSimilarity.CollectionModel collectionModel
The collection model.

## Constructor Details

### LMSimilarity

public LMSimilarity(LMSimilarity.CollectionModel collectionModel)
Creates a new instance with the specified collection language model.

### LMSimilarity

public LMSimilarity(LMSimilarity.CollectionModel collectionModel, boolean discountOverlaps)
Creates a new instance with the specified collection language model and discountOverlaps.

### LMSimilarity

public LMSimilarity()
Creates a new instance with the default collection language model.

## Method Details

### newStats

protected BasicStats newStats(String field, double boost)
Description copied from class: `SimilarityBase`
Factory method to return a custom stats object

Overrides:
  `newStats` in class `SimilarityBase`

### fillBasicStats

protected void fillBasicStats(BasicStats stats, CollectionStatistics collectionStats, TermStatistics termStats)
Computes the collection probability of the current term in addition to the usual statistics.

Overrides:
  `fillBasicStats` in class `SimilarityBase`

### explain

protected void explain(List<Explanation> subExpls, BasicStats stats, double freq, double docLen)
Description copied from class: `SimilarityBase`
Subclasses should implement this method to explain the score. `expl` already contains the score, the name of the class and the doc id, as well as the term frequency and its explanation; subclasses can add additional clauses to explain details of their scoring formulae.

The default implementation does nothing.

Overrides:
  `explain` in class `SimilarityBase`
Parameters:
  `subExpls` - the list of details of the explanation to extend
  `stats` - the corpus level statistics.
  `freq` - the term frequency.
  `docLen` - the document length.

### getName

public abstract String getName()
Returns the name of the LM method. The values of the parameters should be included as well.

Used in `toString()`.

### toString

public String toString()
Returns the name of the LM method. If a custom collection model strategy is used, its name is included as well.

Specified by:
  `toString` in class `SimilarityBase`
See Also:
  - `getName()`
  - `LMSimilarity.CollectionModel.getName()`
  - `LMSimilarity.DefaultCollectionModel`