solr custom similarity

1. 需求原因

由于对于关键字的处理会发生如下情况:

搜索关键字---你好,会命中如下情况

“你好你好你好” 和 “你好”

前者score要比后者大很多,在根据score的评分中,会排在前面,影响用户体验

2. 解决办法:

修改评分规则,忽略关键字重复所产生的不必要权重

重写lucene的 DefaultSimilarity中 tf(float freq)方法, 在solr源码的中新建ConstTfSolrSimilarity类:

package com.mycompany.solr.util;
import org.apache.lucene.search.similarities.DefaultSimilarity;  

/** 
 * tf(t in d) = 1 
 * @author   
 * @version V1.0 2016-05-20 
 */ 

public class ConstTfSolrSimilarity extends DefaultSimilarity{  

        @Override 
        public float tf(float freq) {   
            return 1.0f;    
        }    

        @Override
        public String toString() {
        return "ConstTfSolrSimilarity";
        }  

}  

把这个类打成jar包,eclipse打jar包的方法也比较简单。

3. 配置过程:

3.1 将所给的ConstTfSolrSimilarity.jar 文件复制到tomcat下的: webapps\solr\WEB-INF\lib里面;

3.2 在schema.xml配置文件中添加如下配置:

<similarity class="com.goodjobs.solr.util.ConstTfSolrSimilarity">
  </similarity> 

3.3 重启tomcat后,配置即可生效。

转载于:https://my.oschina.net/fight123/blog/681337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值