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 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:
  • 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:
  • Constructor Details

    • SchemaSimilarityFactory

      public SchemaSimilarityFactory()
  • Method Details