尝试使用以下使用 WordDelimiterFilterFactory 的字段类型。它将单词拆分为子词并对子词组执行可选的转换。
默认情况下,单词会按照以下规则拆分为子词:
1.拆分字内分隔符(所有非字母数字字符)。“Wi-Fi” -> “Wi”、“Fi”
2.split on case transitions(可以关闭——见splitOnCaseChange参数)“PowerShot”->“Power”,“Shot”
3.split on letter-number transitions (可以关闭 - 见 splitOnNumerics 参数) "SD500" -> "SD", "500"
<fieldtype name="subword" class="solr.TextField">
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>