在solr 5.3.1中替换ApostropheFilterFactory

时间:2017-03-29 12:33:24

标签: elasticsearch solr solrj solr4 solrcloud

我需要在编制索引之前从单词中删除撇号。例如,我希望学士学位成为学士学位。我使用了solr.ApostropheFilterFactory,但我认为,这个过滤器在solr4之后被弃用了,我使用的是solr5。 这就是我使用它的方式

<analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ApostropheFilterFactory"/>
</analyzer>

我也使用过StandardFilterFactory

<fieldType name="text" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
  </analyzer>
</fieldType>

这些都不适合我。任何人都可以建议我什么。提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用Word分隔符过滤器

此过滤器在单词分隔符处分割标记 确定分隔符的规则确定如下:

<fieldType name="text" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory"/>
  </analyzer>
</fieldType>
  • 单词内容的变化:“CamelCase” - &gt; “骆驼香烟盒”。可以通过设置splitOnCaseChange =“0”来禁用此功能。
  • 从alpha到数字字符的转换,反之亦然:“Gonzo5000” - &gt; “奇闻趣事”,“5000”“4500XL” - &gt; “4500”,“XL”。可以通过设置splitOnNumerics =“0”来禁用此功能。
  • 非字母数字字符(丢弃):“热点” - &gt; “热”,“现场”
  • 删除了一个尾随的“'s”:“O'Reilly's” - &gt; “O”,“Reilly” 丢弃任何前导或尾随分隔符:“ - hot-spot--” - &gt; “热”,“现场”

经典过滤器

  

此过滤器获取Classic Tokenizer的输出并从首字母缩略词中删除句点,从占有词中删除“s”。

<fieldType name="text" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ClassicFilterFactory"/>
  </analyzer>
</fieldType>

注意:如果在analyzer标签中提供type =“index”,则分析器用于索引时间