似乎您需要将此字段配置为使用solr.KeywordTokenizerFactory作为其标记器。
由于名称并没有真正传达,这个标记器会将基础字段作为一个单独的标记处理,留下空格、字母到数字、数字到字母的转换、标点符号等等(除非你也有 char这些过滤器)。
我不了解配置 Solr 的最新细节,但我猜测该字段的架构中的条目可能看起来像这样:
<fieldtype name="myProductNumberFIeld" class="solr.TextField">
<analyzer>
<!-- can have a few filters of course -->
<charFilter class="solr.MappingCharFilterFactory"
mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- etc. -->
<!-- That's the main thing you need -->
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldtype>
更一般地,您需要为产品编号、部件编号、UPC 等定义一个相当具体的分析器,作为提高这些字段的召回率的一种方式,因为用户并不总是知道这些标识符的特定格式(标点符号和其他分隔符,如果有的话,应该是等)。
然而,使用不同的分析器的问题是它会阻止将字段与一般文本搜索相关联,因为在微不足道的时候,只能有一种方法来处理用户的查询。