在索引之前,我需要删除单词中的撇号。例如,我想让单例汉成为单例汉。我为此使用了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>

这些都不对我有用。任何人都可以建议我什么。提前致谢!

最佳答案

使用单词定界符过滤器

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

<fieldType name="text" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory"/>
  </analyzer>
</fieldType>
  • 单词中的大小写更改:“CamelCase”->“Camel”,“Case”。可以通过设置splitOnCaseChange =“0”来禁用它。
  • 从字母到数字字符的转换,反之亦然:“Gonzo5000”->“Gonzo”,“5000”“4500XL”->“4500”,“XL”。可以通过设置splitOnNumerics =“0”来禁用它。
  • 非字母数字字符(丢弃):“热点”->“热点”,“点”
  • 删除结尾的“'s”:“O'Reilly's”->“O”,“Reilly”
    任何前导或结尾定界符都将被丢弃:“--hot-spot--”->“hot”,“spot”

  • 要么

    经典过滤器


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

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

    关于elasticsearch - 在Solr 5.3.1中替换ApostropheFilterFactory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43093649/

    10-09 08:27