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:
  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
`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
`protected LMSimilarity.CollectionModel` `collectionModel` The collection model.

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

`discountOverlaps`

### Constructor Summary

Constructors
Constructor and 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.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`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

`computeNorm, explain, getDiscountOverlaps, log2, score, scorer, setDiscountOverlaps`

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

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

### Field Detail

#### collectionModel

    protected final LMSimilarity.CollectionModel collectionModel

The collection model.

### Constructor Detail

#### LMSimilarity

    public LMSimilarity(LMSimilarity.CollectionModel collectionModel)

Creates a new instance with the specified collection language model.

#### LMSimilarity

    public LMSimilarity()

Creates a new instance with the default collection language model.

### Method Detail

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