Search code examples
indexingsolrprefix

Solr results with * are empty, without * I have results


I have this text field with the value of "object-a1" When I search for: object-a I get the object. When I search for: object-a* I get an empty result.

My field is indexed like this:

     <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" 
                    splitOnNumerics="0" 
                    splitOnCaseChange="0"
                    preserveOriginal="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" 
                    splitOnNumerics="0" 
                    splitOnCaseChange="0"
                    preserveOriginal="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>

Any ideas?

Thanks!


Solution

  • When you use wildcards (*), you are hitting a little-known issue with Solr called multiterm. Specifically, WordDelimiterFilterFactory is not MultiTerm-aware (no (multi) flag marking it so on the Solr Start listing for the component)

    Wildcards are not very efficient, you may want to consider using EdgeNGram filter instead at the end of the chain.