【问题标题】:Dollar sign in PatternReplaceFilterFactoryPatternReplaceFilterFactory 中的美元符号
【发布时间】:2012-09-14 12:47:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: regex search solr sunspot


    【解决方案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>
    

    上面的字段完美替代了它。

    【讨论】:

      【解决方案2】:

      最后我用 MappingCharFilterFactory 修复了它。

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

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

      mapping.txt 看起来像这样:

      "$" => "s"
      

      重新索引后就成功了!

      【讨论】:

        猜你喜欢
        • 2010-10-26
        • 2015-06-19
        • 1970-01-01
        • 2010-12-14
        • 2015-08-05
        • 1970-01-01
        • 2015-08-21
        • 2010-11-30
        相关资源
        最近更新 更多