概述
聚合搜索初步定义为个性化“元搜索”,同时将信息聚合在一起实现网络工具化、个性化的发展需求;提升网络使用效率,让用户更快
地从繁复的搜索系统里解放出来,让上网搜索更轻松有效。本程序针对常用的Google、Baidu、Bing等搜索引擎进行了聚合其搜索结果
的实践,实现了元搜索最低要求。聚合的搜索结果将以网页的形式展示出来,并且实现其中的链接可用性。一、完成一个聚合搜索引擎的基本步骤
1.  获取Google、Baidu、Bing等搜索引擎进行网页搜索时的查询URL模式。
2.  分析各家搜索引擎返回的搜索结果的模式,每个结果定义为一个有效的Item对象。
3.  对提取到所有Item对象进行去重重排序聚合。
4.  回写聚合结果文件,调用浏览器打开。
二、各步的具体操作及其说明
1.获取Google、Baidu、Bing等搜索引擎进行网页搜索时的查询URL模式。
通过在各家搜索引擎提供搜索服务的检索框里输入查询的字串,点击查询后,查看浏览器中的地址栏中的URL模式,即可获得各家搜索引擎
的查询URL模式。以下是以“5sing”为查询关键字获取到的几家主流搜索引擎的查询URL模式。
Google
http://www.google.com.hk/search?q=5sing
Baidu
http://www.baidu.com/s?wd=5sing
Bing
http://hk.bing.com/search?q=5sing
Yahoo
http://www.yahoo.cn/s?q=5sing
2.分析各家搜索引擎返回的搜索结果的模式,每个结果定义为一个有效的Item对象。
通过第1步获得的查询URL,可以通过编程获取到各家搜索引擎对相应查询关键字返回结果。返回的结果以HTTP协议为标准。想要从返回
的结果中提取出有效的结果,需要使用正则表达式过滤其中的无效部分,并将获取到的每一个结果都封装为一个Item对象。通过分析获
得各家搜索引擎返回结果中有效的Item模式(正则表达式):Google <li class=\"g\"><h3 class=\"r\">.+?</li>Baidu <table.+?><tr><td.+?><h3.+?>.+?</div></td></tr></table>Bing<li class=\"sa_wr.+?\">.+?</div></div></li>Yahoo<li class=\"record.+?\">.+?<h3 class=\"title\">.+?</li>
通过以上的正则表达式即可将对应搜索引擎返回的查询结果中的有效条目提取出来,并将每一个条目都封装为一个Item对象。Item对象
保存了该条目的几个重要属性,如下: • Engine  — 该条目来自与那个搜索引擎
• Content — 该条目在搜索引擎中的内容信息,包括相应的布局和格式
• keyString — 该条目在出去了HTML布局和格式之后剩下的关键信息
• Sequence — 该条目在搜索引擎中返回结果中的排序,编号从0开始
• Score  — 该条目在搜索引擎中得分,所有Item初始化为同一个值1.23. 对提取到所有Item对象进行去重重排序聚合。在从各家搜索引擎提取到所有的Item之后,因为各家搜索引擎中返回的Item中存在不好重复的内容,所以首先需要对所有的Item进行相似性检测,并将相似性很高的Item以某种方式删除,并保留其中一个的Item,这个过程称为Item去重过程。在进行Item去重的时,同时也要对Item的score值进行操作,为去重之后的重排序工作做好准备。3.1相似性检测在定义两个Item是否相似时,使用Item的keyString属性进行字符串相似性检测。检测算法的基本思想如下。两个字符串A和B,假设B是字符串长度较短的一个,B的长度为k。定义一个count变量来记录B的所有子串在A中出现后积累获得相似性权重。出现将字符串B的字符串值分段截取出来,并保持截取的字符串在B中的顺序不变,截取的模式为C = subString( i , j ) ,其中 0 <= i  < k , i <= j < k。获得C之后检测A是否包含C,若包含C,则count值加(j – i).当B的所有子串都检测完毕后,将count值与B的所有字串数想除,得到rate = count / ( (k + 1) * k /2),rate即为B与A的相似性的度量。根据经验来看,当rate值大于2.7时,说明B与A相似度很高,在聚合的时候应该删除其中一个,并且为了保留更多的信息,这里选择删除B,而保留A。
3.2 重新为Item的score属性赋值
在删除B的同时,必须意识到能够删除B,说明A和B所指向的信息不同搜索引擎都检测到了,暗示删除B之后,A信息的score值需要提升,
而非保持初始化值。在对score重新复制时,同时也必须考虑该Item在搜索引擎返回结果中排名,即sequence所记录的信息。基于此,
定义了score新值的计算方式。Score = A.score * (A所属引擎返回的Item总数 — A.sequence) / (A.sequence + 1) + B.score * (B所属引擎返回的Item总数 — B.sequence) / (B.sequence + 1).
新得到的score值将作为回写result时排序的第一依据,score值越大,则排名越靠前。若score相同,则再查看sequence属性,sequence
越小,排名越靠前;若score和sequence都相同,则比较keyString的长度,长度越长,信息量越大,排名越靠前。
4. 回写结果文件,调用浏览器打开查看
以“5sing”为查询关键字为例,程序运行结果截图如下:

三、不足
在具体实现时只使用了Baidu和Bing两家搜索引擎;
聚合算法没有进行跟大规模的数据验证,使用经验规则来判定的聚合结果显得略有粗糙;
使用JavaSE平台编程,没有充分利用JavaEE平台上对网页处理更为友好资源。参考文献
1. 美 Cormen, T.H等著;殷建平等译 《算法导论(原书第3版)》 北京:机械工业出版社
2. 罗刚 著 《自己动手写网络爬虫》 北京:清华大学出版社

Source files @ https://github.com/Shushier/MetaSearchEngineDemo

聚合搜索 Meta Search实践相关推荐

  1. PostgreSQL 图式搜索(graph search)实践 - 百亿级图谱,毫秒响应

    标签 PostgreSQL , CTE , 递归查询 , cycle , depth , loop , deep , level , 层级 , array , row array , JSON 背景 ...

  2. 爱奇艺搜索排序算法实践(内附福利)

    7月3日下午,爱奇艺技术产品团队举办了"i技术会"线下技术沙龙,本次技术会的主题是"NLP与搜索".我们邀请到了来自字节跳动.去哪儿和腾讯的技术专家,与爱奇艺技 ...

  3. 华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践

    搜索是一个古老的技术,从互联网发展的第一天开始,搜索技术就绽放出了惊人的社会和经济价值.随着信息社会快速发展,数据呈爆炸式增长,搜索技术通过数据收集与处理,满足信息共享与快速检索的需求.基于搜索技术, ...

  4. C语言实现跳转搜索jump search算法(附完整源码)

    跳转搜索jump search算法 跳转搜索jump search算法的完整源码(定义,实现,main函数测试) 跳转搜索jump search算法的完整源码(定义,实现,main函数测试) #inc ...

  5. 全局搜索快捷键_Windows 自带的聚合搜索来了,与 Mac 的 Spotlight 相比体验如何?...

    最近 Windows 10 推出了自带的聚合搜索功能 PowerToys Run,取代了之前的 Win+R. 苹果的 macOS 以人性化著称,有几个功能让 Windows 用户一直很羡慕,比如全局的 ...

  6. 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    前言 上一篇 基于ABP落地领域驱动设计-01.全景图 概述了DDD理论和对应的解决方案.项目组成.项目引用关系,以及基于ABP落地DDD的通用原则.从这本篇开始,会更加深入地介绍在基于 ABP Fr ...

  7. 阿里文娱搜索排序算法实践和思考(附交流视频和PPT下载链接)

    开工大吉! 本次分享以优酷为例介绍阿里文娱视频搜索的相关业务和算法体系,视频搜索基础相关性和排序算法的特点和挑战以及技术实践方案:听众还了解了优酷在多模态视频搜索上的探索和实践技术方案. 内容摘要 ▽ ...

  8. android语音控制歌曲播放,发条 - 支持音乐聚合搜索,歌单导入,语音控制的 APP - Android 应用 - 【最美应用】...

    而小美今天要介绍的这款 App,在一定程度上就可以缓解这个问题: 发条,说起来是一款讯飞出品的语音助手软件,不过功能主要集中在音乐上,它聚合了 QQ音乐.网易云音乐以及酷狗酷我的资源,在使用上也有着独 ...

  9. 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    ​ DDD和ABP Framework两个中心技术,后边还会陆续发布中心构件完成.归纳事例完成系列文章,敬请关注! ABP Framework 学习及实施DDD经历分享:示例源码.电子书同享,欢迎加入 ...

  10. 2023最新最强网盘资源搜索引擎,聚合搜索6大网盘资源

    今天跟大家推荐一个超强的网盘资源搜索网站,主要强在以下几点: 聚合搜索6大网盘的资源 资源都比较新且丰富 支持按照网盘.资源类型进行筛选 网站无任何套路(无需登录注册,无广告) 千帆搜索 - 资源超丰 ...

最新文章

  1. jQurey 的选择器
  2. 艾伟_转载:string类与StringBuilder类性能比较
  3. 我的Android 4 学习系列
  4. 因为WPFe JavaScript到了不得不学的地步
  5. sql判断null/空缺值
  6. 机器学习中倒三角符号_机器学习的三角误差
  7. 一寸照纯红色底图片_和记场下载
  8. Asp.Net Core 轻松学-玩转配置文件
  9. CentOS 7.6安装ZABBIX 4.4.0 + TimescaleDB
  10. 【目标跟踪】基于matlab红外图像弱小目标检测与跟踪【含Matlab源码 374期】
  11. 基于MyEclipse+JSP+Mysql+Tomcat开发得塞北村镇旅游网站设计
  12. 人体神经系统分布图高清,神经系统图片高清
  13. WeAdmin连接资源,相关错误
  14. 计算机教室如何防火,校园防火及火灾逃生自救安全常识
  15. 手机盾验证失败是什么意思_腾讯手机安全验证失败怎么回事
  16. 【STUDY】工程数学
  17. pwnable-shellshock
  18. Scratch基础(一):安装和了解软件
  19. 【案例9】sysConfig 中文乱码(方块)
  20. “哥伦布”华为,与智能联接新大陆

热门文章

  1. Java 标准 I/O 流编程一览笔录( 下 )
  2. modeler 连接oracle,用 IBM SPSS Modeler 整合不同数据库之间的数据
  3. Windows API 教程(七) hook 钩子监听
  4. BT技术原理(BitTorrent)
  5. 3dmax软件怎样一键取消视图背景网格
  6. 防火墙之Iptables与Firewalld
  7. (二)ubuntu下安装Amd RX470驱动
  8. 差分 离散化 (线段树优化lazy标记)2018ICPC SouthEastern Fishermen
  9. 国内直接下载google play谷歌商店apk安装包的网站【https://apkpure.com/】
  10. nios自学笔记四:将sof和elf合并为JIC文件