我有一个字段,其内容用于从中生成facet。我想解决的一个特殊问题是,我的一些内容包含纯文本即http://google.com
的超链接。因此,我开始将http
视为我最重要的方面之一。如何确保在建立索引之前过滤掉超链接内容?使用某种形式的正则表达式过滤器?
我知道我可以在客户端做这个预处理部分,当我把记录添加到Solr。然而,我希望保持所有内容的一致性,并且是Solr管道的一部分,所以如果可能的话,我希望Solr预处理器为我做这些。
我会用这些组件来解决这个问题:
-
solr.UAX29URLEmailTokenizer
将URL保存为令牌 -
solr.PatternReplaceFilterFactory
用空字符串替换URL令牌(搜索堆栈溢出以获得合适的正则表达式模式) -
solr.LengthFilterFactory
过滤零长度令牌
<analyzer type="index">
<tokenizer class="solr.UAX29URLEmailTokenizerFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="..." replacement="" />
<filter class="solr.LengthFilterFactory" min="1" max="1000" />
</analyzer>
请注意,从solr.StandardTokenizerFactory
更改标记器可能会产生超出本答案所描述的含义的影响,因此请务必进行测试。