需要帮助在 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>
我有型号代码,假设是 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>