Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
solr WordDelimiterGraphFilterFactory,从数字中删除0_Solr - Fatal编程技术网

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。。。