在Solr我希望“a $ ap”找到“asap”以及“a $ ap”。为此,我将其添加到schema.xml中的索引和查询分析器并重新编制索引:
<filter class="solr.PatternReplaceFilterFactory" pattern="$" replacement="s"/>
但是,“$ ap”只返回“a $ ap”而“asap”只返回“asap”。这可能是一些愚蠢的语法,但我不知道出了什么问题!
答案 0 :(得分: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>
上述字段完全取代了它。
答案 1 :(得分:0)
最后我用MappingCharFilterFactory修复了它。
我将其添加到索引和查询分析器中:
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>
其中mapping.txt看起来像这样:
"$" => "s"
重新编制索引之后就行了!