0

在 Solr 中,我希望“a$ap”找到“asap”以及“a$ap”。为了实现这一点,我将其添加到 schema.xml 中的索引和查询分析器并重新索引:

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

但是,“a$ap”只返回“a$ap”,“asap”只返回“asap”。这可能是一些愚蠢的语法问题,但我不知道出了什么问题!

4

2 回答 2

1

您应该转义 $,因为它是正则表达式的特殊字符,表示结束。

采用 :-

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

上面的字段完美地替换了它。

于 2012-09-14T13:30:56.053 回答
0

最后我用 MappingCharFilterFactory 修复了它。

我将此添加到索引和查询分析器中:

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

mapping.txt 看起来像这样:

"$" => "s"

重新索引后就成功了!

于 2012-09-18T08:18:35.083 回答