需要帮助在 Solr 上标记模型代码

Need help to tokenize a model code on Solr

我有型号代码,假设是 A1234。我希望能够通过两种方式对其进行标记化:

Token 1: A1234
Token 2: 1234 (only numbers)

因此,当我搜索时,我可以同时键入两者。

此外,我需要对空格进行标记,所以如果我假设一个名为 A1234 Ferrari 的模型,我希望输出标记为

A1234, 1234, Ferrari

我怎样才能做到这一点?我尝试了一些 PatternTokenizerFactory 但我无法达到我的目标。

<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*|[0-9]+"/>

感谢您的帮助。

尝试为您的字段使用以下字段类型。

preserveOriginal:(整数,默认0)如果non-zero,则保留原始token

splitOnNumerics :(整数,默认为 1)如果为 0,则不要在从字母到数字的转换中拆分单词:

<fieldType name="custom_field_type" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100">
       <analyzer type="index">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.WordDelimiterGraphFilterFactory"
                   generateWordParts="1"
                   generateNumberParts="1"
                   preserveOriginal="1"
                   splitOnNumerics="1"
           />
           <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
           <tokenizer class="solr.KeywordTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
   </fieldType>