我有一个字段,其内容用于生成facet。我想要解决的一个特殊问题是,我的一些内容包含明文的超链接,即http://google.com
。结果,我开始将http
视为我的最佳方面之一。在索引之前,如何确保过滤掉超链接内容?使用某种类型的正则表达式过滤器?
我知道当我将记录添加到Solr时,我可以在客户端执行此预处理部分。然而,我想保持一致性,并且是Solr管道的一部分,所以我希望Solr预处理器尽可能为我做这件事。
答案 0 :(得分:0)
我会用这些组件来解决它:
solr.UAX29URLEmailTokenizer
将网址保留为令牌solr.PatternReplaceFilterFactory
用空字符串替换URL标记(搜索Stack Overflow以获得合适的正则表达式模式)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
更改标记生成器可能会超出此答案中描述的含义,因此请务必进行测试。