簡體   English   中英

PatternReplaceFilterFactory中的美元符號

[英]Dollar sign in PatternReplaceFilterFactory

在Solr中,我希望“ a $ ap”找到“ asap”以及“ a $ ap”。 為此,我將其添加到schema.xml中的索引和查詢分析器中並重新索引:

<filter class="solr.PatternReplaceFilterFactory" pattern="$" replacement="s"/>

但是,“ a $ ap”僅返回“ a $ ap”,“ asap”僅返回“ asap”。 這可能是一些愚蠢的語法問題,但我不知道這是怎么回事!

您應該轉義$,因為它是正則表達式的特殊字符,表示結尾。

采用 :-

    <fieldType name="test" class="solr.TextField" sortMissingLast="true" omitNorms="true">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="\$" replacement="s" replace="all" />
      </analyzer>
    </fieldType>

以上字段完美替代了它。

最后,我用MappingCharFilterFactory修復了它。

我將此添加到索引和查詢分析器中:

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>

其中mapping.txt如下所示:

"$" => "s"

重新索引后,這樣做就成功了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM