Class 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 types 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 < 8.0 = LegacyBM25Similarity
    • luceneMatchVersion >= 8.0 = BM25Similarity

    The defaultSimFromFieldType option accepts the name of any fieldtype, and uses whatever Similarity is explicitly configured for that fieldType as the default 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.

    See Also:
    FieldType.getSimilarity()