任务五 通用类问题相关度计算实现
标签(空格分隔): 一找
任务描述
在百度答案、经验、知道、百科中选择最相关内容
目前优先百度答案,但某些query使用百度答案并非为最相关内容(二胎政策)
实现方案
1.用查询词和标题取交集(都放到一个HashSet里去重过),除以标题和查询词中最短者的长度
2.各类别权重 :答案 1.1,经验 0.7,知道 0.5,百科 0.4
百度图片 0.5(如果查询含有关键词“图片”), -0.5(查询不含关键词“图片”)
百度最新消息 -1.0
3.加上百度的排序信息
score[i] += (10-i)/20.0;
score[i]为第i个url的得分,排在越前分数越高
4.如果url里不含“baidu”,则将标题相似度缩放为原来的0.8,以进一步提高百度页面的权重
5.两个分数加起来,10个网页取分数最大的那个,效果还可以
具体过程
1.在GeneralService
加入了searchBaiduAnswer
接口
2.在GeneralServiceImpl
类中实现了GeneralServiceImpl
接口
3.在GeneralServiceClient
中替换了searchBaidu
方法的逻辑,注释掉了searchBaidu方法,用searchBaiduAnswer替换
public String searchBaidu(String word) throws Exception {
GeneralService service = getRandService();
return service == null ? null : service.searchBaiduAnswer(word);
// return service == null ? null : service.searchBaidu(word);
}
4.在svn上提交修改的代码,在xshell登录dev3平台,将项目check out到本地
5.执行mvn clean package
,接着会在当前目录生成target目录
6.进入target目录,执行sh stop-general.sh
先把RPC服务停掉
7.过大约30秒,执行sh start-general.sh
将RPC服务开启
8.输入jps命令查看服务是否正确启动,如果看到GeneralServiceRPCServer
了,就说明服务启动完成了
代码
位于com.yeezhao.dolphin.crawler.general
下的GeneralServiceImpl.java
中的searchBaiduAnswer
方法
参数word为搜索关键词,具体流程可以参照上述的实现方案