搜索引擎<原理、技术与系统>读书笔记(1)

本文详细阐述了网页搜集过程中的DNS缓存建立、IP范围控制、网页头信息与体信息获取策略,以及如何避免网页重复搜集。同时,通过分析网络带宽、搜集效率等关键因素,提出了网页搜集系统的优化方案,包括网页重要度的评估、搜集策略的制定及系统负载的合理分配,以提升搜集效率和资源利用效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 增加DNS缓存的原因
    • URL数以亿计,而主机数以百万计。如果没有DNS缓存,搜集子系统每次搜集新的URL,即使刚在上一次的任务中解析过该主机名,也要重新进行域名解析(除了用IP地址直接表示的主机,如:162.105.80.44)。为了避免频繁的查询DNS服务器,造成类似于拒绝服务攻击的副作用,要建立DNS缓存
    • 针对小规模的网页搜集(如百万量级), DNS缓存只需要建立在内存中就够了,一是因为内存占用不多,二是因为域名解析有时效性,即使把这些解析出的信息保存到外存上,过几天也失去了意义。如果是为亿量级服务的Web信息搜集模块,要考虑单独建立为搜集子系统服务的DNS模块,这样能够既加快网页信息的获取,又进一步降低对DNS服务器的压力。
  • 增加IP范围控制的原因
    • 有些站点不希望搜集程序搜走自己的资源。比如很多建设在大学范围内的论文检索系统,通常只是对学校IP范围内开放的。如果搜集程序处于允许检索IP范围内,搜集了这些资源,然后提供服务,就有可能使非授权用户看到了论文信息。
    • 针对特定信息的搜索,比如:校园网搜索,新闻网站搜索。
    • 网络资费方式也会对搜集策略产生影响。
  • 获取网页头信息和体信息
    • 网页头信息获取后,进行解析,根据返回码,判断Web服务器是否针对该请求转向,如果转向,应该重新组装消息体发送请求;根据传输类型,网页体的大小,申请内存空间准备接收,如果超出预定接收大小,放弃该网页;根据网页类型,判断是否获取该网页。如果满足获取条件,继续进行网页体信息的获取。
    • 注意网页头信息中给定的网页体大小有可能错误,所以读取网页体信息应该是处在一个循环体中,直到不能读到新的字节为止。因此根据需求增减内存空间,是格外需要注意的地方。
    • 在读取网页信息时,存在服务器长时间不响应的情况,为了加快搜集效率,要设定超时机制,超时后放弃该网页。
    weight(p)表示网页p的权重,indegree(p)表示网页p的入度函数, indegree(father p)表示网页p的父网页的入度函数,mirror(p)表示网页p的镜像度函数,directorydepth(p)表示网页p的目录深度函数。
  • 有多少个节点并行搜集网页
    • 在连接速率为100Mbps快速以太网络上(以太网的MTU(Maximum Transfer Unix)是1500字节),假设线路的最大利用率是100%,则最多允许每秒传输(1.0e+8b/s)/ (1500B×8b/B)≈ 8333个数据帧,也即每秒传输8333个网页。如果局域网与Internet的连接为100Mbs,Internet带宽利用率低于 50%,则每秒传输的网页数目平均不到4000个。
    • 如果搜集系统由n个节点组成,单个节点启动的gatherer数目应该低于4000/n。
    • 在实际的分布式并行工作的搜集节点中,还要考虑CPU和磁盘的使用率问题,通常CPU使用率不应该超过50%,磁盘的使用率不应该超过80%,否则机器会响应很慢,影响程序的正常运行。在天网的实际系统中局域网是100Mbps的以太网,假设局域网与Internet的连接为100Mbps(这个数据目前不能得到,是我们的估计),启动的gatherer数目少于1000个。这个数目的gatherer对于上亿级的天网搜索引擎[天网,2004]是足够的。
    • 以太网数据帧的物理特性是其长度必须在46~1500字节之间。[Stevens,1996]说明在一个网络往返时间RTT为200ms的广域网中,服务器处理时间SPT为100ms,那么TCP上的事务时间就大约500ms(2×RTT+SPT)。网页的发送是分成一系列帧进行的,则发送1个网页的最少时间是(13KB/1500B) × 500ms ≈4s。如果系统处于满负荷运转,单个节点启动100个gatherer程序,则每个节点每天应该能够搜集(24×60×60s/4s)× 100pages = 2,160,000个网页。考虑到gatherer实际运行中可能存在超时,搜集的网页失效等原因,每个节点的搜集效率小于2,160,000个网页/天。
  • 如何避免网页的重复搜集
    • 定义两个表,“未访问表”和“已访问表”。“未访问表”中存储准备取入待访问队列的URL,“已访问表”中存储已经请求过网页的URL。
    • 在TSE中,对访问过的URL,未访问过的URL和获得的网页内容分别作MD5摘要(算法可以参看RFC1321)[RFCs,2004],获得其唯一标识,建立3个集合。新解析出的URL,首先根据已经访问过的URL的MD5集合判断是否已经抓取过,如果没有则放入未访问URL库,否则放弃;查找的时候可以做到O(1)的时间复杂度。
    • 注意不能简单的根据IP地址来判断是否为同一个站点,因为有虚拟主机的情况。要解决重复收集网页,就要找出那些指向同一物理位置URL的多个域名和IP。
  • 网页的“重要度”
    • 网页的入度大,表明被其他网页引用的次数多
    • 某网页的父网页入度大
    • 网页的镜像度高,说明网页内容比较热门,从而显得重要
    • 网页的目录深度小,易于用户浏览到
    • 搜索引擎开始工作时,既不知道要搜的网页入度大小(即不知道要访问的网页URL被哪些其他网页指向),也不知道网页内容是什么,所以对于表征网页重要性的第1、2、3项特征在搜集工作开始时无法确定。这些因素只能在获得网页或几乎所有的Web 链接结构之后才能够知道。只有特征4是不需要知道网页的内容(没有抓取网页之前)就可以确定某个URL是否符合“重要”的标准,而且网页URL目录深度的计算就是对字符串的处理,统计结果表明一般的URL长度都小于256个字符,这使得URL目录深度的判别易于实现。所以对于搜集策略的确定,特征4是最值得考虑的指导因素。
    • URL权值的设定:根据URL的目录深度来定,深度是多少,权值就减少多少,权值最小为零。
    • 设定URL初始权值为10(此值设定的越小,从未访问URL集合中排序输出就越快。但是也不能太小,否则URL的权值意义就不大了,导致搜集策略不明显);
    • URL中出现字符”/”,”?”,或”&” 1次,则权值减1,出现”search”,”proxy”,或”gate” 1次,则权值减2;最多减到零。(包含”?”,或”&”的URL是带参数的形式,需要经过被请求方程序服务获得网页,不是搜索引擎系统侧重的静态网页,因此权值相应降低。包含”search”,”proxy”,或”gate”,说明该网页极大可能是搜索引擎中检索的结果页面,代理页面,因此要降低权值)。
    • 选择未访问URL的策略。因为权值小不一定说明不重要,所以有必要给一定的机会搜集权值小的未访问URL。选择未访问URL的策略可以采用轮流的方法进行,一次按照权值排序取,一次随机取;或者N次按照权值排序取,M次随机取(N1,M1)。N,M 的选择可以根据系统实际运行情况获得。 ≥≥
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值