搜索引擎及其开发

本文介绍了搜索引擎的分类,包括通用搜索和垂直搜索,并详细阐述了搜索引擎的主要组成部分,如下载(爬虫)子系统、数据预处理、搜索服务和控制部分。通过MD5映射解决URL重复下载问题,以及对下载策略、网页正文解析、排重和PageRank等关键技术的探讨,揭示了搜索引擎工作的复杂性和挑战。
摘要由CSDN通过智能技术生成

一、分类

按照目的的不同,搜索引擎分了两种:通用搜索(业内称为大搜索)和垂直搜索。网页搜索是大搜索,新闻搜索、论坛搜索是垂直搜索,酷讯的生活搜索之类的都是垂直搜索。

二、组成

一般说,搜索引擎包括这几部分:下载(爬虫)子系统,数据预处理子系统,搜索服务,控制(及监控)部分。搜索引擎是一个比较新的行业,国内也掌握了核心的技术。所以,和做OA,做工作流,做核心层上的应用有些不同,系统无论是从规模还是性能上讲都有比较高的要求。

 

下载。互联网通过超链,每一个网页是一个点,然后点和点之间有关联,关联的注释就是链接文本,所有的链接组成了一个巨大的网。大搜索下载的任务就是把这些网的每一个点都保存到本地(当然这是说理论上,现在互联网的规模,恐怕google也无法把所有的东西都保存到本地)。这带来几个问题:1. 网页如何尽量不重复的下载。网络带宽资源是有限的,本地硬盘资源也是有限的,下载的时间也是有限制的,重复的下载系统受不了。2. 互联网是不断更新的,这种更新需要反映到本地硬盘上的数据。如何尽量及时的更新?

 

一个Url就是一个字符串,而且这个字符串比较长。给保存和比较都带来了麻烦。我们对Url做md5映射,把它映射成一个64位的整形值。现在大多用的是64位。Md5本来算出来时128位,一般是取前64位。Md5的重复率很低。我曾经做过70亿Url的实验,我尽量模拟Url的组成生成了70亿Url,然后取md5值,排重,没有发现一个重的;而且md5的散列非常好,他本身可以认为是一个哈希散列,但是分布的非常随机。我把70亿的结果值分散到多个文件里边,每个文件里边的ID的个数基本上是一样的。我们可以认为,每一个Url取了md5值以后,他的这个ID值是唯一的。它可以用来比较两个字符串是否相同。也称作信息指纹。是判断是否相同的重要的办法。

 

对ID值取模(mod)是一个非常重要的思想。依赖于md5值的散列性,你可以把大量的数据分成小堆,存到文件,各个小堆的数据是控制到可以放到内存中处理。这是查找、排重、以及后边建索引的基本的方法。它使得我们可以把大任务分解成可以并发解决。这样的并发系统是一个明显的木桶理论模型:决定于处理速度最慢的一个。但是,md5的散列性非常好,各个处理部分处理的数据在规模上相差不大,或者说基本上是一样的。比如上边所说的例子,70亿ID值。70亿*8=56G,放到内存里边不太现实。可以把他们对200取模,放到文件,每个文件280M,然后对每一个文件进行处理。那就随你的便了。

 

下载分成Server端和Client端。Server端指定下载的种子,他把这些url发给Client端,client端把server端给的url下载下来以后,分析页面把分析出来的url发给server端。。。。如此循环。有了上边的介绍,判断是否下载就好说了。都是64位值得比较。最简单的办法,你可以利用平衡二叉树,这是一个非常方便的动态查找的办法。不过,数据量一大,64位值也会占用很多的内存。我们可以算一下。1亿*8约等于800M,而且树节点左右指针也要占8个字节,平衡二叉树还有一个标记变量,这样算下来,放完1亿大约需要1.8G。不过他的查询速度可以忍受,而且是绝对的不重复,没有误差。假设我们可以探测到的Url是100亿网页,按照这种办法,一台机器按照放2亿计算,需要100/2=50台server端。这样的确是要不少的机器,当然还有其他的办法。需要仔细的去想。呵呵。

 

垂直搜索的下载和大搜索的下载是不一样的。垂直搜索针对一些特定的网站。以新闻为例:新闻下载会针对新闻源,比如新浪,china.com等新闻发布网站定时、定向抓取;寻找他们的新闻发布的规律,把那些网页下载下来。这就没有上边所说的大图的遍历和更新机制的问题了。难度不可同日而语。

 

不过,不要看了这些就认为下载很简单,这是一个与经验关系非常密切的活。上边说的都好说,但是,下载过程中碰到的问题可就多了。你需要解决大量的意想不到的事情,我在这里也不能多说,不过可以举几个例子:如果你把一个网站访问的太过频繁,重则把这个网站给弄瘫痪了(特别是小网站,大网站的抗打击能力还可以),轻则。。。让管理员注意到了太多的访问就把你的IP给封了。下载需要礼貌。毕竟是访问别人的网站。这是到别人家里做客啊!可不比自己家!还有作弊网页,大量的SEO作弊网页,下载的时候需要去掉一部分;还有,不是所有的网站都是可以在任何时候访问的,新浪首页下载不下来的时候你怎么办?得多想想后边如何处理。

 

下载完了的数据需要进行处理。抽取标题,正文,父链接,字连接,链接文本。这是后边的数据基础。所有这些以及后边的其他的部分,难度大多集中于数据量。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值