2012-09-14 141 views
0

在Solr我想“一个$ ap”找到“asap”以及“一个$ ap”。要做到这一点我在schema.xml中将此添加到我的索引和查询分析器和重建索引:美元符号PatternReplaceFilterFactory

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

但是,“一个$ AP”只返回“A $ AP”和“尽快”将只返回“尽快”。这可能是一些愚蠢的语法,但我不知道什么是错的!

回答

0

最后,我用MappingCharFilterFactory修复了它。

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

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

哪里的mapping.txt是这样的:

"$" => "s" 

那重建索引后的伎俩!

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> 

上述领域取代它完美。

+0

是的,我已经尝试过,但它并没有做到这一点... – TTT

+1

添加了完整的字段,它适用于我与Solr 3.6 – Jayendra

+0

这并不适用于我。奇怪的。 – TTT