在索引Solr中的记录之前删除纯文本超链接

时间:2014-06-16 08:17:25

标签: regex solr

我有一个字段,其内容用于生成facet。我想要解决的一个特殊问题是,我的一些内容包含明文的超链接,即http://google.com。结果,我开始将http视为我的最佳方面之一。在索引之前,如何确保过滤掉超链接内容?使用某种类型的正则表达式过滤器?

我知道当我将记录添加到Solr时,我可以在客户端执行此预处理部分。然而,我想保持一致性,并且是Solr管道的一部分,所以我希望Solr预处理器尽可能为我做这件事。

1 个答案:

答案 0 :(得分:0)

我会用这些组件来解决它:

  1. solr.UAX29URLEmailTokenizer将网址保留为令牌
  2. solr.PatternReplaceFilterFactory用空字符串替换URL标记(搜索Stack Overflow以获得合适的正则表达式模式)
  3. solr.LengthFilterFactory过滤零长度令牌
  4. 在schema.xml中:

    <analyzer type="index">
        <tokenizer class="solr.UAX29URLEmailTokenizerFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="..." replacement="" />
        <filter class="solr.LengthFilterFactory" min="1" max="1000" />
    </analyzer>
    

    请注意,从solr.StandardTokenizerFactory更改标记生成器可能会超出此答案中描述的含义,因此请务必进行测试。