org.apache.solr.search.similarities

## Class SchemaSimilarityFactory

- java.lang.Object
- - org.apache.solr.schema.SimilarityFactory
  - - org.apache.solr.search.similarities.SchemaSimilarityFactory

- All Implemented Interfaces:
    SolrCoreAware

      public class SchemaSimilarityFactory
      extends SimilarityFactory
      implements SolrCoreAware

  `SimilarityFactory` that returns a global `PerFieldSimilarityWrapper` that delegates to the field type, if it's configured. For field type's that do not have a `Similarity` explicitly configured, the global `Similarity` will use per fieldtype defaults -- either based on an explicitly configured `defaultSimFromFieldType` a sensible default depending on the `Version` matching configured:

  - `luceneMatchVersion < 6.0` = `ClassicSimilarity`
  - `luceneMatchVersion >= 6.0` = `BM25Similarity`

  The `defaultSimFromFieldType` option accepts the name of any fieldtype, and uses whatever `Similarity` is explicitly configured for that fieldType as thedefault for all other field types. For example:

         <similarity class="solr.SchemaSimilarityFactory" >
           <str name="defaultSimFromFieldType">type-using-custom-dfr</str>
         </similarity>
         ...
         <fieldType name="type-using-custom-dfr" class="solr.TextField">
           ...
           <similarity class="solr.DFRSimilarityFactory">
             <str name="basicModel">I(F)</str>
             <str name="afterEffect">B</str>
             <str name="normalization">H3</str>
             <float name="mu">900</float>
           </similarity>
         </fieldType>

  In the example above, any fieldtypes that do not define their own `</similarity/>` will use the `Similarity` configured for the `type-using-custom-dfr`.

  NOTE: Users should be aware that even when this factory uses a single default `Similarity` for some or all fields in a Query, the behavior can be inconsistent with the behavior of explicitly configuring that same `Similarity` globally, because of differences in how some multi-field / multi-clause behavior is defined in `PerFieldSimilarityWrapper`. In particular please consider carefully the documentation & implementation of `Similarity.coord(int, int)` and `Similarity.queryNorm(float)` in `ClassicSimilarity` compared to `PerFieldSimilarityWrapper`

  See Also:
    `FieldType.getSimilarity()`

- - ### Field Summary

    - ### Fields inherited from class org.apache.solr.schema.SimilarityFactory

      `CLASS_NAME, params`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SchemaSimilarityFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Similarity` | `getSimilarity()`
    `void` | `inform(SolrCore core)`
    `void` | `init(SolrParams args)`

    - ### Methods inherited from class org.apache.solr.schema.SimilarityFactory

      `getClassArg, getNamedPropertyValues, getParams`

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

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

- - ### Constructor Detail

    - #### SchemaSimilarityFactory

          public SchemaSimilarityFactory()

  - ### Method Detail

    - #### inform

          public void inform(SolrCore core)

      Specified by:
        `inform` in interface `SolrCoreAware`

    - #### init

          public void init(SolrParams args)

      Overrides:
        `init` in class `SimilarityFactory`

    - #### getSimilarity

          public Similarity getSimilarity()

      Specified by:
        `getSimilarity` in class `SimilarityFactory`

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.