Solr:在索引之前剥离标点符号

Bog*_*iev 5 indexing solr punctuation filterfactory

我遇到了从solr索引中去除标点符号的问题当标点符号紧跟在一个单词后面时,这个单词没有正确编入索引.

例如:如果我们索引"hello,John",则不会通过关键字"hello"找到资产,而如果我们在单词"hello"之后删除逗号则不会出现问题.

是否有任何FilterFactory假设剥离标点符号?有任何想法吗?

谢谢,波格丹.

cla*_*ron 7

你可以使用它solr.PatternReplaceFilterFactory来剥离开头和尾随标点符号:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
    replacement="$1"/>
Run Code Online (Sandbox Code Playgroud)

如果你想在开头和结尾删除所有标点符号,除了(例如)单词前面的美元符号,你可以使用:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>
Run Code Online (Sandbox Code Playgroud)


Pas*_*imo 6

这是通过WordDelimiterFilterFactory完成的.设置generateWordParts = 1.

还有可以使用的PatternTokenizerFactory,但我从未尝试过.