solr WordDelimiterGraphFilterFactory,从数字中删除0
我的文档中有此字段:solr WordDelimiterGraphFilterFactory,从数字中删除0,solr,Solr,我的文档中有此字段: <fieldType name="signature" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterGraph
<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>
我想搜索也像查询
musf594
mus f 594
mus.f.594
我需要删除其他数字之前的前导0。
如何在solr index analyzer中执行此操作?您可以通过添加
PatternReplaceFilterFactory来尝试
<filter class="solr.PatternReplaceFilterFactory" pattern="^0+" replacement="" replace="all" />
修改字段类型并重新加载集合后。您可以在solr管理页面上分析字段类型
以下是分析页面的截图
第一张截图
第二张截图
您可以通过添加PatternReplaceFilterFactory
进行尝试
<filter class="solr.PatternReplaceFilterFactory" pattern="^0+" replacement="" replace="all" />
修改字段类型并重新加载集合后。您可以在solr管理页面上分析字段类型
以下是分析页面的截图
第一张截图
第二张截图
通过应用正则表达式“^0+”进行检查……通过应用正则表达式“^0+”进行检查……pattern=“\.0+”
更适合我的需要,谢谢。但是,我希望有一个结果,无论是否使用0
,此模式仅需删除即可。我应该放置过滤器的正确位置是什么?您也可以在查询时应用模式过滤器工厂,然后它将适用于这两种情况..我编辑了问题:我还需要为musf594
提供结果,这是唯一一个不起作用的部分我认为这是不可能的…如果你实现了…请发布答案…你将能够生成一个令牌musf0594,而不是musf594…要实现同样的目标,你可能需要编写自己的过滤器工厂…模式=“\.0+”
更适合我的需要,谢谢。但是,我希望有一个结果,无论是否使用0
,此模式仅需删除即可。我应该放置过滤器的正确位置是什么?您也可以在查询时应用模式过滤器工厂,然后它将适用于这两种情况..我编辑了问题:我还需要为musf594
提供结果,这是唯一一个不起作用的部分我认为这是不可能的…如果你实现了…请发布答案…你将能够生成一个标记musf0594,但不能生成musf594…要实现同样的目标,你可能需要编写自己的FilterFactory。。。