solr WordDelimiterGraphFilterFactory,从数字中删除0
solr WordDelimiterGraphFilterFactory, remove 0 from digits
我的文档中有这个字段:
<fieldType name="signature" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" catenateWords="1" catenateNumbers="1" catenateAll="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我正在为 MUS.F.0594
这样的字符串编制索引
我能够搜索并获得正确的查询结果,例如:
musf0594
mus f 0594
mus.f.0594
我也想搜索类似
的查询
musf594
mus f 594
mus.f.594
我需要删除其他数字之前的前导 0。
如何在 solr 索引分析器中执行此操作?
您可以尝试添加 PatternReplaceFilterFactory
。
<filter class="solr.PatternReplaceFilterFactory" pattern="^0+" replacement="" replace="all" />
修改字段类型并重新加载集合后。可以在solr管理页面分析fieldType
这是分析页面的截图。
第一个截图
第二张截图
我的文档中有这个字段:
<fieldType name="signature" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" catenateWords="1" catenateNumbers="1" catenateAll="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我正在为 MUS.F.0594
这样的字符串编制索引
我能够搜索并获得正确的查询结果,例如:
musf0594
mus f 0594
mus.f.0594
我也想搜索类似
的查询musf594
mus f 594
mus.f.594
我需要删除其他数字之前的前导 0。 如何在 solr 索引分析器中执行此操作?
您可以尝试添加 PatternReplaceFilterFactory
。
<filter class="solr.PatternReplaceFilterFactory" pattern="^0+" replacement="" replace="all" />
修改字段类型并重新加载集合后。可以在solr管理页面分析fieldType
这是分析页面的截图。
第一个截图
第二张截图