org.apache.solr.analysis

Class ReversedWildcardFilterFactory



  • public class ReversedWildcardFilterFactory
    extends TokenFilterFactory
    Factory for ReversedWildcardFilter-s. When this factory is added to an analysis chain, it will be used both for filtering the tokens during indexing, and to determine the query processing of this field during search.

    This class supports the following init arguments:

    • withOriginal - if true, then produce both original and reversed tokens at the same positions. If false, then produce only reversed tokens.
    • maxPosAsterisk - maximum position (1-based) of the asterisk wildcard ('*') that triggers the reversal of query term. Asterisk that occurs at positions higher than this value will not cause the reversal of query term. Defaults to 2, meaning that asterisks on positions 1 and 2 will cause a reversal.
    • maxPosQuestion - maximum position (1-based) of the question mark wildcard ('?') that triggers the reversal of query term. Defaults to 1. Set this to 0, and maxPosAsterisk to 1 to reverse only pure suffix queries (i.e. ones with a single leading asterisk).
    • maxFractionAsterisk - additional parameter that triggers the reversal if asterisk ('*') position is less than this fraction of the query token length. Defaults to 0.0f (disabled).
    • minTrailing - minimum number of trailing characters in query token after the last wildcard character. For good performance this should be set to a value larger than 1. Defaults to 2.
    Note 1: This filter always reverses input tokens during indexing. Note 2: Query tokens without wildcard characters will never be reversed.
     <fieldType name="text_rvswc" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
                 maxPosAsterisk="2" maxPosQuestion="1" minTrailing="2" maxFractionAsterisk="0"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       </analyzer>
     </fieldType>