在Solr中索引记录之前,去掉纯文本超链接



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

我知道我可以在客户端做这个预处理部分,当我把记录添加到Solr。然而,我希望保持所有内容的一致性,并且是Solr管道的一部分,所以如果可能的话,我希望Solr预处理器为我做这些。

我会用这些组件来解决这个问题:

  1. solr.UAX29URLEmailTokenizer将URL保存为令牌
  2. solr.PatternReplaceFilterFactory用空字符串替换URL令牌(搜索堆栈溢出以获得合适的正则表达式模式)
  3. solr.LengthFilterFactory过滤零长度令牌
在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更改标记器可能会产生超出本答案所描述的含义的影响,因此请务必进行测试。

相关内容

  • 没有找到相关文章