带 * 的 Solr 结果为空,不带 * 我有结果

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

我的这个文本字段的值为 "object-a1" 当我搜索:object-a 时,我得到了对象。 当我搜索:object-a* 时,我得到一个空结果。

我的字段索引如下:

     <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>

有什么想法吗?

谢谢!

试试这个 属性 如下所示 LINK。

catenateAll="1" causes all subword parts to be catenated: 

https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

当您使用通配符 (*) 时,您遇到了一个鲜为人知的 Solr 问题 multiterm. Specifically, WordDelimiterFilterFactory is not MultiTerm-aware (no (multi) flag marking it so on the Solr Start listing for the component)

通配符效率不高,您可能需要考虑在链的末尾使用 EdgeNGram filter