org.apache.lucene.search.similarities

## Class PerFieldSimilarityWrapper

- java.lang.Object
- - org.apache.lucene.search.similarities.Similarity
  - - org.apache.lucene.search.similarities.PerFieldSimilarityWrapper

    public abstract class PerFieldSimilarityWrapper
    extends Similarity

Provides the ability to use a different `Similarity` for different fields.

Subclasses should implement `get(String)` to return an appropriate Similarity (for example, using field-specific parameter values) for the field.

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`

### Constructor Summary

Constructors
Constructor and Description
`PerFieldSimilarityWrapper()` Sole constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`long` `computeNorm(FieldInvertState state)` Computes the normalization value for a field, given the accumulated state of term processing for this field (see `FieldInvertState`).
`abstract Similarity` `get(String name)` Returns a `Similarity` for scoring a field.
`Similarity.SimScorer` `scorer(float boost, CollectionStatistics collectionStats, TermStatistics... termStats)` Compute any collection-level weight (e.g.

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

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

### Constructor Detail

#### PerFieldSimilarityWrapper

    public PerFieldSimilarityWrapper()

Sole constructor. (For invocation by subclass constructors, typically implicit.)

### Method Detail

#### computeNorm

    public final long computeNorm(FieldInvertState state)

Description copied from class: `Similarity`
Computes the normalization value for a field, given the accumulated state of term processing for this field (see `FieldInvertState`).

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) &gt; 0` then `SimScorer.score(freq, n1) &lt;= SimScorer.score(freq, n2)` for any legal `freq`.

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

Specified by:
  `computeNorm` in class `Similarity`
Parameters:
  `state` - current processing state for this field
Returns:
  computed norm value

#### scorer

    public final 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.

#### get

    public abstract Similarity get(String name)

Returns a `Similarity` for scoring a field.