自行实现Solr重复分词过滤器

最近在对搜索质量做优化,想解决一些文章通过重复关键词的堆砌而导致搜索该关键词排序很高的问题。比如搜索“游戏”,结果一篇叫做“游戏游戏游戏游戏游戏游戏游戏游戏”的文章始终排在第一位。

体验了一下百度贴吧,从高亮结果显示可以看出贴吧是有对这种堆砌重复关键词的情况做处理的。应该把连续重复出现的关键词忽略了。下图是贴吧搜索(相关度排序)“天天”的结果页面:



lucene/solr提供了类似功能木有?

找个了几个东西:

RemoveDuplicatesTokenFilter ,可惜只会移除在相同position上的分词,没用。


StopFilter ,可惜只能移除停用词,用不了。



自行实现Solr重复分词过滤器CustomerRemoveDuplicatesTokenFilter

模仿StopFilter来写,继承FilteringTokenFilter类,重写protected boolean accept()方法,当出现重复分词时就直接让accept方法返回false,把重复的词从索引分词中移除掉。这里遇到个小坑,就是一开始没有重写void reset()方法,结果出现各种神奇的问题。。。原来有状态的Filter是需要实现reset方法的,在里面把状态清除掉。


当前solr版本:solr4.4


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值