5

我在从 solr 索引中删除标点符号时遇到问题当标点符号紧跟在一个单词之后,则该单词没有正确索引。

例如:如果我们索引“hello, John”,则通过关键字“hello”将找不到资产,而如果我们删除单词“hello”后的逗号则不会有问题。

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

谢谢,博格丹。

4

3 回答 3

7

您可以使用solr.PatternReplaceFilterFactory去除开头和结尾的标点符号:

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

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

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>
于 2010-10-08T14:06:06.890 回答
6

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

还有可以使用的PatternTokenizerFactory,但是我没试过。

于 2010-06-30T13:54:59.580 回答
0

使用 PatternReplaceFilterFactory

<!-- remove punctuation -->
    <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>

...

于 2012-12-04T16:39:16.060 回答