Package org.apache.lucene.search.similarities

# Class MultiSimilarity

java.lang.Object
org.apache.lucene.search.similarities.Similarity
org.apache.lucene.search.similarities.MultiSimilarity

public class MultiSimilarity extends Similarity
Implements the CombSUM method for combining evidence from multiple similarity values described in: Joseph A. Shaw, Edward A. Fox. In Text REtrieval Conference (1993), pp. 243-252

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

## Nested Class Summary

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

`Similarity.SimScorer`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final Similarity[]`
`sims`
the sub-similarities used to create the combined score

## Constructor Summary

Constructors
Constructor
Description
`MultiSimilarity(Similarity[] sims)`
Creates a MultiSimilarity which will sum the scores of the provided `sims`.

## Method Summary

Modifier and Type
Method
Description
`long`
`computeNorm(FieldInvertState state)`
Computes the normalization value for a field at index-time.
`Similarity.SimScorer`
`scorer(float boost, CollectionStatistics collectionStats, TermStatistics... termStats)`
Compute any collection-level weight (e.g.

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

`getDiscountOverlaps`

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

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

## Field Details

### sims

protected final Similarity[] sims
the sub-similarities used to create the combined score

## Constructor Details

### MultiSimilarity

public MultiSimilarity(Similarity[] sims)
Creates a MultiSimilarity which will sum the scores of the provided `sims`.

## Method Details

### computeNorm

public long computeNorm(FieldInvertState state)
Description copied from class: `Similarity`
Computes the normalization value for a field at index-time.

The default implementation uses `SmallFloat.intToByte4(int)` to encode the number of terms as a single byte.

WARNING: The default implementation is used by Lucene's supplied Similarity classes, which means you can change the Similarity at runtime without reindexing. If you override this method, you'll need to re-index documents for it to take effect.

Matches in longer fields are less precise, so implementations of this method usually set smaller values when `state.getLength()` is large, and larger values when `state.getLength()` is small.

Note that for a given term-document frequency, greater unsigned norms must produce scores that are lower or equal, ie. for two encoded norms `n1` and `n2` so that `Long.compareUnsigned(n1, n2) > 0` then `SimScorer.score(freq, n1) <= SimScorer.score(freq, n2)` for any legal `freq`.

`0` is not a legal norm, so `1` is the norm that produces the highest scores.

Overrides:
  `computeNorm` in class `Similarity`
Parameters:
  `state` - accumulated state of term processing for this field
Returns:
  computed norm value

### scorer

public Similarity.SimScorer scorer(float boost, CollectionStatistics collectionStats, TermStatistics... termStats)
Description copied from class: `Similarity`
Compute any collection-level weight (e.g. IDF, average document length, etc) needed for scoring a query.

Specified by:
  `scorer` in class `Similarity`
Parameters:
  `boost` - a multiplicative factor to apply to the produces scores
  `collectionStats` - collection-level statistics, such as the number of tokens in the collection.
  `termStats` - term-level statistics, such as the document frequency of a term across the collection.
Returns:
  SimWeight object with the information this Similarity needs to score a query.