随笔--百度和迅雷的原理

自从第一次用百度以来,我就想知道搜索引擎的原理.最近没有事想了一下,也想出了一套搜索引擎的运行方式,虽然这个方式可能不是很好的,但是这个方式绝对是可以运行起来的.

一个搜索引擎是不可能在我们发出搜索请求的时候,到每个网站上去搜索带有请求关键字的页面,这样的话根本就无法完成请求,而且执行的时间也会非常的长.但根据百度之类搜索引擎的返回结果,我们会看到一个页面执行时间都是几十毫秒.在这样短的时间里找到这么多的内容,只有数据库了.

数据库里的内容的搜集当然是在我们发出搜索请求之前就已经用相关的收集程序收集起来了,我这儿也可以写一下大致的实现方法:

  • 建立数据库,有以下字段:1.网址(为主字段,不重复),2.网页内容2个字段(一个为整个HTML,用于类似百度快照,另一个为从中提出的文本,用于搜索引擎返回结果),3.加入这个网页的日期,4.一个布尔值,判断这个地址对应的页面是否已保存到数据库中.
  • 网页收集程序:这个程序我用java写过一个,这个程序的作用是把引入的参数(一般是一个http地址,这个参数来自于上面数据库中第四个字段为flase的行的第一个字段)对应的网页下载下来,然后把这个网页的所有<a>标签的href属性值取出(如果是相对地址的,改成绝对地址),加入到上面的数据库中,循环执行这个操作,直到这个数据库中找不到第四个字段为false时为止.
  • 在数据库中加入所有起始URL,运行收集程序,数据库里的内容就会飞快的增加啦!
  • 说起来,我只在数据库中加入了一个地址:http://wap.lxyes.com(乐讯,一个手机网站,因为手机页面小,所以用它测试)运行几分钟后产生了500多条记录.当然还没有运行结束,有些网页内容还没有进行下载.而且这种程序用JAVA并不是最好的选择,因为她解析HTML速度太慢了.

     


    关于迅雷资源搜索的原理:

    当然这个也是我想出来的,可能不是它的原理,但是这个方法也是可用的,有兴趣的一起交流一下嘛.

    迅雷的下载是多线程下载的,这个大家都知道,它最大的优点还有就是可以搜索这个资源的其它地址,然后加一个线程从这个地址下载.

    搜索其它这个资源的地址,我想这一点和百度是差不多的:

    数据库采用的字段可以为:

  • URL
  • 文件大小
  • 我想这两个字段是最主要的,数据可以像百度那样用收集程序采集,也可以用客户程序上传:例如我们用迅雷从一个URL下载文件,那么迅雷就会把这个文件的大小和URL传到服务器,服务器先把它存到数据库里(如果用户多的话,以后就会有很多记录),然后再搜索数据库里文件大小为这个大小的所有记录,返回所有的这对应的URL到我们的迅雷软件上,我们的迅雷软件再对这些地址进行筛选:筛选取是必须的,因为有可能会出现网络上的两个不同文件有相同的字节数,这样的话下载下来的文件就是错误的.筛选方法当然很简单:从随机位置下载一定长度的连续字节,例如5000字节,然后和我们要下那个文件对应的这5000个字节进行比较,如果完全相同,说明这两个文件是一样的.它就是这个文件的另一个种子.

     

     

     

    看了这篇文章,或许你可以知道怎样把你的网站加入到百度的搜索引擎了.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值