我有一个必须处理零件编号的 Solr 索引——这WordDelimiterFilterFactory
似乎非常适合。示例部件号可以是“CH2300-100”。我期望以下查询与该字段匹配(并且确实如此):
- 甲烷
- CH2300-100
- CH2300100
但以下查询不匹配:
- CH2300
查看调试输出 - 不会生成单词部分的组合。我希望catenateWords
and/orcatenateNumbers
属性能够处理这种情况,但它似乎不起作用。我是否在配置中遗漏了允许匹配标记化片段的所有排列的内容?
<schema version="1.5" name="test">
<types>
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="0" preserveOriginal="1" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
</analyzer>
</fieldType>
</types>
<fields>
<field stored="true" name="id" type="text" />
<field stored="true" indexed="true" name="catnum" type="text" />
</fields>
<uniqueKey>id</uniqueKey>
</schema>