当单词后标点符号跟随时,我在从SOLR索引上脱离标点符号有问题,那么这个词不能正确地索引。

例如:如果我们为“ Hello,John”索引,则将通过关键字“ Hello”找到资产,而如果我们在Word“ Hello”之后删除逗号,则不会出现问题。

是否有任何要剥离标点符号的过滤器捕获物?有任何想法吗?

谢谢,博格丹。

没有正确的解决方案

其他提示

您可以使用 solr.PatternReplaceFilterFactory 剥离开始和落后标点符号:

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

而且,如果您想在开始和结束时剥离所有标点符号,例如(例如)单词前的美元标志,您可以使用以下方式:

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

这是通过WordDelimiterFilterFactory完成的。 SET GERTATEWORDPARTS = 1。

还有 patterntokenizerFactory 可以使用,但是我从未尝试过。

使用Pattern ReplaceFilterFactory

<!-- 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>

...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top