网页搜集系统

正文版权归和讯和小编王志平本身共同享有 转发和爬虫请表明原文地址
www.cnblogs.com/tdws

自1991年万维网出现后,互连网上的网页数量就呈指数级生长,到近来甘休,短短二十余年,网络上就有成百上千亿网页。怎样在那海量的网页中搜索下载具有对特定情景有价值的网页?使用什么的国策能保险网页不会现出重复?怎么样保障爬虫程序的高并发爬取?如何在网页中领到关键点等等难点,那是本篇博客重点描述的内容。

一.基础安装

wget http://download.redis.io/releases/redis-4.0.0.tar.gz

tar xzf redis-4.0.0.tar.gz

cd redis-4.0.0

cd src

make

make test

./redis-server ../redis.conf

ps -ef |grep redis  查看redis进程
netstat -lntp | grep 6380  查询指定端口监听

kill -9 进程id  强制杀死redis进程

1.1 万维网结构分析

把万维网看作是2个相互衔接的连通图,每一种网页看作三个节点,链接看作为边,其中任意二个网页可被其他网页所链接,那种链接叫“反向链接”,这么些网页也可以链接到此外网页,那种链接就叫“正向链接”。遍历网页的有二种趋势,正向遍历和反向遍历,其中正向遍历是按正向链接的取向进行遍历网页,而反向遍历则是按反向链接的自由化遍历网页。

探究者经试验发现,无论是正向遍历仍旧反向遍历,表现出来的是全然差其余效力。要么遍历到很少的五个网页集合,要么是爆炸性的遍历到上亿的网页,从尝试结果中,研商者发现,万维网具有蝴蝶结型结构,如下图所示。

图片 1

图 1-1万维网的蝴蝶结型结构\[1\]

此布局分为左中右三片段,其中左部的成为“目录型网页”,即常说的导航网页,从此部分出发初叶拔取正向遍历,可至少能遍历到整个网页的百分之七十伍,而拔取反向遍历,则不得不遍历到很少的一部分;中部的网页则是相互连通的网页,此部分不管是使用正向依旧反向,都大约可遍历到全体网页的百分之七十五;右部的网页称为“权威网页”,那部分网页被中心网页所指向,那有个其他网页“认同度”高,被大部分网页所引述,很明显,此部分网页的遍历与左部网页的遍历呈对称型;而“蝴蝶”的“须脚”部分,此部分的网页表现为从左部链接到任何网页,恐怕从左部或右部直接链接到右部,以及少部分与中部、左部或右部都并未链接,在此部分网页出发,不管选拔正向遍历或是反向遍历都只可以遍历到零星的很少一些网页。

因此上述剖析,大家得以得出,爬虫应尽量从蝴蝶型的左部出发,或从中央的网页早先遍历。

二. 4.0本子开始精通

Redis4.0中加进了UNLINK 命令(替换del命令),这一个命令在剔除体量较大的键时,命令在后台线程里面实践,还有异步的flushdb和flushall命令分别是

flushdb async

flushall async

尽心尽力的避免了服务器阻塞。

扩展了置换数据库命令,比如SWAPDB
0 1 ,交流0库和1库

日增了memory命令,可以印证内存使用状态,通过help命令可以看出

127.0.0.1:6379>
memory help

1) “MEMORY USAGE
<key> [SAMPLES <count>] – Estimate memory usage of
key”

2) “MEMORY STATS –
Show memory usage details”

3) “MEMORY PURGE – Ask
the allocator to release memory”

4) “MEMORY
MALLOC-STATS – Show allocator internal stats”

MEMOLX570Y USAGE
<key> 预估指定key所需内存

MEMO奥迪Q7Y STATS
视察内存使用详情

MEMOLANDY PU奇骏GE
向分配器索要自由越多内存

MEMO奥德赛Y MALLOC-STATS
视察分配器内部景色

此外还有一多级优化比如
LRU和PSYNC,还有模块系统。

1.2 网络爬虫

互联网爬虫是网页搜集系统最关键的一有的之一,它是摸索引擎工作的底蕴。本节团长介绍互联网爬虫的基础概念、分布式爬虫的架构、一些爬取网页的策略以及robots讨论等。

三.Cluster

 即使一主一从加哨兵可以化解一般场景下服务可用的标题,不过多少个节点分别存储全体的缓存数据,这不仅导致体积受限,更是让咱们受限于机器配置最差的那一台,那就是木桶效应。硬件垂直扩容并不可以一挥而就日益庞大的缓存数据量和提供能搞得可用性。

在古旧的Redis版本中,水平扩容的能力来自于发送命令的客户端,由客户端路由区其余key给到不一致的节点,下次读取的时候,也如约同样方法路由key到指定节点得到数量。倘诺接下去还愿意增添扩容节点的话,就要对历史缓存数据做动迁,迁移进程中为保障数据一致性也要提交一定代价。为了消除节点的络绎不绝扩容,设计初期能够先行安装重重节点,以备日后使用,全体规划的节点都踏足到分片当中,鉴于初期数据较少,可单台服务器多少个节点,在事后数码增多的场地下,只要求迁移节点到新的服务器。而不需求对数码开展重新分配等操作。可是这种做法仍旧让大家觉得难保险,难迁移,难应对故障,迁移进度中也很难保险数据一致性,比如肆21个节点,任意三个节点想要停止并搬迁服务器,都会引发多少不等同或许出现故障,只可以截止集群,等待迁移落成后,集群上线。

Redis3.0提供了Cluster集群。那些集群的定义和前边提到的集群有所不一样。后面的集群仅代表,八个节点间尚未互动的关系,只是依据客户端路由分配key到不同的节点,全体节点共同分配全部数据。3.0的Cluster成效,拥有和单机实例相同的性质,大致匡助全体命令,对于涉及五个键的下令,比如MGET,假使每1个键都在同二个节点则可以不奇怪再次来到数据,否则提醒错误。其余集群中限制了0号数据库,若是切换数据库则会指示错误。

哨兵和集群是八个单身的效果,但从本性来看哨兵可以视为集群的子集。当不须要多少分片恐怕曾经采用客户端分片的气象下哨兵已经足足使用,若是急需程度扩容,Cluster是极度好的选择。

每种集群至少三台主节点。

到redis-4.0.0目录下
修改redis.conf

修改全体redis.conf文件
在GENERAL一般设置中找到daemonize 将其安装为yes
大家将后台运维redis

protect
mode为no

bind
ip为0.0.0.0

集群搭建成功前并非设置连接密码。

设置maxmemory
100m

cluster-enabled设置为yes

注意cluster-config-file配置区其余称谓。小编刚开头给各种节点都配备nodes.conf
, 结果弄了多少个钟头都卓殊,一向在waiting claster join. WTF???
工作目录显明都以团结的文书夹呀,后来在stackoverflow上
看到有人相同情形,小编就改下配置文件名试了一下,还真可以了….

把redis-4.0.0文件夹复制6份

自己准备了两台服务器,当然一台服务器也是可以玩转的。

五个节点分别运转,此时集群是不可能平常干活的,因为她俩依旧两个单身的节点。下边大家要动用src目录下的redis-trib.rb来将她们出席到同三个集群当中。可是.rb由Ruby编写,大家要求安装环境,还索要gem
redis包。yum install ruby下载的是2.0本子,并且得不到提高,
大家要求ruby2.2+,所以大家不采取。ruby安装指南http://blog.csdn.net/lixwjava/article/details/49231899

wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
tar -zxvf ruby-2.2.7.tar.gz  
cd  ruby-2.2.7
./configure  
make  
make test
make install  
如果顺利的话就安装完ruby了

如果没有zlib 先安装一下
yum install zlib-devel
yum install zlib
接下来进入ruby文件夹下ext/zlib中 安装ruby自身提供的zlib包
cd ext/zlib
ruby ./extconf.rb
make
make install

此外索要设置openssl
(不装也行) http://blog.csdn.net/yangxuan0261/article/details/52065158  假诺没装,更换gem镜像为非ssl的炎黄ruby镜像https://ruby.taobao.org/ 

gem sources --add http://gems.ruby-china.org/ --remove https://rubygems.org/
gem sources -l
gem install redis.

图片 2

在实践create
cluster此前 请保障各个node的0库不包蕴其余key.假使有key
就对不天真的节点执行flushall和cluster reset
。各种Node都有1个特定的TCP端口,用来收纳其余nodes的链接;此端口号为面向Client的端口号
+
10000,比如若客户端端口号为6379,那么次node的BUS端口号为16379,客户端端口号可以在安插文件中声称。同理可得,nodes之间的并行通信是透过Bus端口进行,使用了一定的二进制协议,此端口平日应该只对nodes可用,可以依靠防火墙技术来遮掩其余不合法访问。所以注意大家的装有节点端口+一千0
也要保全开放

./redis-trib.rb create --replicas 1 47.92.93.157:6379 47.92.93.157:6380 47.92.93.157:6381 47.92.93.157:6382 47.92.93.157:6383 47.92.93.157:6384

图片 3

启航redis-cli
使用-c参数 连接集群,将会为大家做一些活动重定向工作。

 图片 4

 设置集群密码:

config set masterauth abc  
config set requirepass abc  
config rewrite  

 

1.2.1 爬虫概念

爬虫,它经过下载2个网页,分析内部的链接,继而去访问其余链接指向的网页,周而复始进行,直到磁盘满或人工干预,爬虫的功用总结为两点:下载网页和意识U奥迪Q5L。

爬虫访问网页和浏览器有着同样的点子,同样也都以都以运用HTTP协议和网页服务器交互。流程主要如下\[2\]

1.   客户端程序(爬虫程序)连接到一个DNS服务器上。DNS服务器将主机名转换呈IP地址,因为爬虫程序会频繁的查询DNS服务器,所以可能会造成类似于拒绝服务攻击(DOS)的副作用,所以在很多爬虫程序实现中都会增加DNS缓存,以减少很多不必要的DNS服务器查询,在商业搜索引擎中,一般都会搭建自己的DNS服务器。
2.   建立连接后,客户端会发送一个HTTP请求给网络服务器,以请求一个页面。常见的HTTP请求是GET请求,如:
GET http://www.sina.com.cn/index.htmlHTTP/1.1
该命令表示请求服务器使用HTTP 1.1协议规范1.1版本,将页面www.sina.com.cn/index.html页面返回给客户端。当然客户端也可使用POST命令访问网络服务器。同样,爬虫程序也会频繁的使用GET命令,而使用该命令后会将页面所有内容返回给客户端,在网页重访(因为很多网页会更新,所以需重访网页以得到最新的网页内容)时,尝试用HEAD命令访问服务器,该命令则是要求将网页的head部分返回给客户端,该head部分包含了网页的最后更新时间(Last-Modified)字段,在比对数据库中该网页的此字段后,就可避免大量未更新网页的下载。
3.   分析网页中的URL链接,将它们插入一个队列中,同时提取网页中的重要内容存储到数据库中。队列的主要特点是FIFO,每次将新发现的URL插到队列尾部,然后取得从队列头部取得下一待访问URL,这样循环反复进行,直到队列为空,这便是常说的宽度优先遍历。

由此以上八个步骤便完结了三个简约的互连网爬虫。但中间还有好多难点,例如:

1)  怎么着幸免访问重复URL(访问重复U奥德赛L将会造成极端循环);

2)  爬虫需遵从的罗布ots协议等;

3)  怎么着防止因频仍的走访导致网络服务器“发怒”;

4)  怎么着统筹本课题中电子产品页面采集策略;

5)  分类器;

6)  网页格式的变换难点;

7)  怎么样设计网页的仓储结构以及选拔怎么着的数据库存储海量网页页面;

8)  因为网页也会因为过期,如何设计重访网页策略;

9)  怎样高效能地爬取网页(将在1.3节中教师);

U奥迪Q3L重复防止

幸免U奥迪Q3L重访是三个很重点的难题,假如U中华VL重复访问,必然会造成3个最好的递归访问,直至财富穷尽。一般的政策是爱惜几个表:visited_table和unvisited_table,visited_table代表已走访UCR-VL的表,而unvisited_table相当于1个“义务池”,爬虫不断地从unvisited_table中得到待访问U酷路泽L,这样就幸免了网页的再次访问。工作步骤如下:

1.   为爬虫线程添加三个control进度,此进程最紧要功效是控制爬虫爬取网页,维护多个U卡宴L表等,也就是二个控制器。

2.   爬虫每一遍爬取网页时,从unvisited_table中取得U陆风X8L,下载网页后,对网页进行一连串处理插入到数据库中,同时分析网页中的链接,将链接递交到control进度。

3.   control进程在得到爬虫ULANDL链接后,比对visited_table,看中间是不是留存,若不设有,则将该ULANDL插入到unvisited_table中,同时会回去三个U奥迪Q5L给爬虫,爬虫继续爬取该U索罗德L。

visited_table可采纳三个hash函数,则visited_table是三个bit数组。因为hash函数面临着争辨难题,所以假若有更高的确切必要,可改用Bloom
Filter,Bloom
Filter的规律很简单,它应用多少个不等hash函数来判定,例如,起首化bit数组全部位为0,对于三个U途乐L1,使用五个不一致的hash函数统计后,将bit数组相应岗位1,当判断U卡宴L2是还是不是已走访时,对U奥德赛L2同样选择hash函数计算,假诺计算后,相应的bit数组为0,则表示该UMuranoL未访问,否则,若bit数组中内部任何一人为1,则象征该U途乐L已走访,
具体的验证可参考参考文献。

图片 5

图1-2 Bloom Filter工作原理示例图

正如图1-2所示,对U大切诺基L2使用Bloom
Filter时,有3个bit位已置1,故表示该UOdysseyL已走访过。

幸免互联网服务器“发怒”

干什么网络服务器会“发怒”?互连网服务器承受不住爬虫的屡屡火速的拜会,尽管该网络服务器性能不是很强劲,它将开销全部时间处理网络爬虫的伸手,而不会去处理真实用户的请求,于是它或者将该爬虫看作是DOS攻击,从而禁止爬虫的IP,所以理应幸免互连网服务器的“发怒”,如何处理呢?平常是在爬虫访问该服务器后,爬虫应该等待几秒,从而给互联网服务器充足的时刻去处理其他请求,同时爬虫也应当按照robots协议。

robots协议

robots磋商是Web站点和查找引擎爬虫交互的一种方法,网络管理员将3个robots.txt的文件放在网站的根目录上,例如https://www.google.com/robots.txt.

图片 6

里头User-agent表示爬虫类型(如上图中的*代表全部爬虫),Disallow表示禁止该爬虫爬取的目录,Allow代表同意爬取的页面或目录,所以在切切实实贯彻搜索引擎时,还相应扩张3个robots协议分析模块,严刻遵循robots协议的规定只抓取Web主机允许访问的目录和网页。

 

页面采集策略

本着垂直搜索策略有以下三种:

1.   对全部网络页面搜集下载,然后去除不相干页面。此种方法的后天不足是将会占据大批量的磁盘空间和带宽,在切实可行落实中不可取。

2.   第贰种方法是依据那样壹个实际:二个话题页面往往存在相关主旨页面。其中锚文本的成效重点,它指示了有关链接的核心,所以在实际上利用中,1个特定话题的八个高于页面都被看做种子页面。

文本分类技术。爬虫使用分类器来规定该页面是或不是与给定的核心相关。常用朴素贝叶斯分类器或接济向量机等。下边将简单讲解那三种分类器。

分类器

1.   朴素贝叶斯分类器

 

2.   援救向量机

 

网页格式转换

统计机汉语本是以几百种相互不匹配的格式举行仓储的。标准的文本格式包罗原始文件、HTML、XML、Word以及PDF等等,假如不以正确的艺术去处理,往往会油然则生乱码的情况,所以需求3个工具,在处理到2个新文本格式时,能将它转换到通用的格式,在本课题中,则将它转换成HTML格式即可。统计机存储文件时,还有个难题是编码难题,此题材的通用消除方案是翻开网页底部的编码格式,然后以相应的编码格式读取分析。

之所以,当下载到一篇网页后,首先查看底部消息:查看文本格式和编码格式,然后以相应的方法去处理即可。

网页存储难题

网页的仓储面临三个难点:以什么样的格式存储网页?使用什么的数据库?

1.   首先处理存储网页的格式难点。即使将下载后的网页直接存储到数据库,则有四个难题:

1)  每一个网页平均约有70K,在磁盘上传输70K的数据会很快,只怕只须要不到1毫秒的大运,但在寻找时,却大概须要10阿秒,所以在打开这个散装小文件来读取文档时,需大量的小时支付,一种好的解决方案是将八个文档存储在三个独门的文件中,以一种自自定义的格式进行仓储,例如:

<DOC>
<DOCNO>102933432<DOCNO>
<DOCHEADER>
http://www.sina.com.cn/index.htmltext/html 440
http/1.1200 ok
IP:221.236.31.210
Date:Wed, 02 Jan 2016 09:32:23 GMT
Content-Encoding: gzip
Last-Modified: Tue, 03 Jan 2016 01:52:09GMT
Server: nginx
Content-Length: 119201
</DOCHEADER>
<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
   <meta http-equiv="X-UA-Compatible"content="IE=edge" />
             <title>新浪首页</title>
……
</html>
</DOC>
<DOC>
<DOCNO>102933433<DOCNO>
<DOCHEADER>
……
</DOCHEADER>
……
</DOC>

例子中:

<DOC></DOC>标记了一篇网页的情节,其中囊括了<DOCNO>、<DOCHEADESportage>和网页原始内容;<DOCNO></DOCNO>标记网页的编号;,<DOCHEADE索罗德></DOCHEADE汉兰达>标记了网页的头顶消息,此部分一大半由网络服务器再次来到;剩余部分为网页内容。

2) 若是数据量过大,平常会将积存的文本举行压缩以节约磁盘空间。

2.
次之个难题是储存系统的精选。存储系统可以拔取关周详据库和NoSQL数据库,在根本的搜寻引擎中,很少使用传统的关周详据库来囤积文档,因为大气的文档数据将会压垮关周到据库系统,非关全面据库的有力分布式能力,海量数据存储能力,故障苏醒能力等等促使搜索引擎中偏向于拔取非关全面据库。在本课题中可以挑选MongoDB或BigTable等数据库系统,它们等同也有像样于Mysql强大的社区支持,开源免费等特征。

页面重访机制

因为许多网页会更新,所以需重访网页以博得最新的网页内容,来维持网页库中情节的“与时俱进”,而差其余网站更新频率也不比,那就要对网页变化举办解析建模。

研究表明,网页的转变能够归咎为泊松进程模型,具体可知参考文献。

普遍的重访策略有三种:

1)统一的重访策略:爬虫以同等的功能重访已经抓取的整个网页,以获取统一的翻新机会,全体的网页不加不相同地依据同样的频率被爬虫重访。

2)个体的重访策略:不一样网页的改动频率差别,爬虫依照其创新频率来控制重访个体页面的功效。即对每1个页面都量身定做3个爬虫重访频率,并且网页的扭转频率与重访频率的比值对其余个人网页来说都以相等的。

当然二种办法各有利弊,针对与本课题中电子产品的探寻,由于网页更新频率较慢,且各网页更新频率近乎,所以可拔取策略1.

1.3 分布式网络爬虫

眼下所讲的始末基本上基于单机节点之上,但是单机系统难以满足网络巴黎量网页的寻找,这促使大家接纳分布式打造网页搜集系统,因为网页的搜集义务基本上可看做是相互独立的职分,使用分布式系统,能大大加快网页的募集能力。本节将重大教学基于分布式互联网爬虫的大体架构以及规划中出现的显要难点。

在图1-1中可观察,搜集器中对应了二个控制器,在分布式搜集系统中,将会师世多少个搜集器控制器对,然后再有2个总控制器,如下图所示:

图片 7

图1-六分布式Web搜集系统

如图1-4即为网页搜集系统的共同体分布式结构,图1-4介绍如下:

1.3.1 抓取进度

抓取进度的行事示意图如下:

图片 8

图1-5 爬取进度示意流程图

注:一个爬取进程内会有三个爬取线程。

图1-5解释如下:

a.    首先爬取线程爬取URL时,先由Robots协议模块判断是否在网页服务器允许爬取的URL内,若是,则转到b,否则转到c;
b.    爬取线程将爬取到的网页递交给网页处理模块,网页处理模块会分析网页内的链接,并将网页内容组织成一定格式(3.2.1节)等,将组织后的内容压缩后插入到网页数据库中,并向爬取线程返回网页内的的所有链接内容;
c.    爬取线程将网页处理模块的所有链接(若未爬取,则为空)和当前URL递交到协调进程;
d.    协调进程向该爬取线程返回下一待爬取URL,回到a。

步骤b中,社团网页即为将多少个网页协会在联名,正如1.2.1节所述,然后将集体后的故事情节裁减处理后插入到数据库中。

1.3.2 协调进程

和谐进度的布置性是第贰其中提到到为爬取进度分配U奇骏L,处理非本区域U途乐L,管理爬虫线程等等工作。

和谐进度从0伊始编号,直到n-1,其中n为爬虫主机数,各种协调进程管理本人所属的URL,即为以下政策:

设*URLs = {URL1,URL2, …,

URLn},即URLs为所有URL的集合,定义HOST(URL)为一个网页地址的域名部分,经常对应某台Web服务器,例如:URL

http://www.scie.uestc.edu.cn/main.php?action=viewTeach*er,则*HOST(URL)=
http://www.scie.uestc.edu.cn*,所采取的策略是建立一个HOST(URL)到\[n\]之间的映射,一旦一个HOST(URL)映射到了某一搜集节点,该节点就要负责HOST(URL)下面所有页面的收集。映射函数可采用散列函数。每个协调进程同时维护还要维护两张表,正如3.2.1节所述,visited\_table和unvisited\_table,协调进程工作的具体伪码流程如下\[2\]

for(;;)
begin
a.    等待从其它节点传来的一个URL,或者它所管辖的抓取进程返回一个URL及相关links。
b.    若得到其它节点传来的一个URL
b.1 看URL是否已经出现在visited_table中,若没有,则将URL放到unvisited_table中;
       c. 若得到从抓取进程返回的URL,取得超链接links;
              c.1 从unvisited_table中分给给该抓取进程一个新的URL,并将返回的URL放到visited_table中;
              c.2 并对每个超链接符号串HOST(link)进行模n散列,得到某个整数I;
              c.3 对每一个超链接link及其对应整数i:
                     c. 3.1 如果本节点编号为i,执行b.1的动作
                     c. 3.2 否则,将link发给节点i
end

上述伪代码即为协调进度工作算法,详细表明如下:

步骤a中协调进度中,只会处理属于本节点区域的U帕杰罗L,所以它会等待七个事件:其余节点传来属于本节点的U大切诺基L和本节点上爬取进程传来的爬取的U凯雷德L及相关links:

当此事件是其他节点传来UPRADOL,则第3必要表达该U安德拉L是或不是已经访问过(使用hash函数在visited_table中比较,正如1.2.1节所述),若未访问过,则插入到unvisited_table中供爬取进度爬取;

当此事件是本节点的爬取过程爬取的URAV4L和有关links时(其中的有关links即为网页处理模块已分析出的网页内容中的链接),则协调进度会给该爬取进程分配下一待爬取ULacrosseL。然后协调进度会分析相关links,对链接中的U汉兰达L作散列操作,若散列的结果为本协调进程的数码时,则实施b.1操作,即判断该U奥迪Q3L是还是不是已经访问,若已走访,则放任,否则,则插入到unvisited_table中;当散列的结果不是本协调进度时,则发送给相应的调和进度。

1.3.3 调度模块

调度模块的办事就是保安系统内享有登记进度的音讯,包含它们的IP地址和端口号,当其余两个调和进程的新闻具有转变时,该模块负责将立异的音信传送给别的协调过程。

调度模块是网页搜集系统可扩充性的第一,它会为各协调进程分配UOdysseyL,正如上一节中所述。系统扩张性突显在于:当其中1个协调进度模块因某种原因此崩掉时,调度模块会将该协调进程的音讯分配到其余协调进程模块。

1.4 小结

本章内容主要助教了电子产品网页搜集系统的咬合、关键难题和规划细节。最初叶引出贰个互连网爬虫的定义,然后讲述互连网爬虫要求考虑的一多元难点,例如防止UOdysseyL重复、格式转换、存储等等,因为单机系统难以适应海量网页的抓取,接着小说讲解了分布式网页搜集系统的连串架构为止了本章的情节,当然,实际设计系统时,还会在这一个情节上依照实际景况进行精选。

参考文献

[1] 潘雪峰, 花贵春, 梁斌. 走进搜索引擎.二零一三.5. 电子工业出版社.
[2]  W.BruceCroft, 唐Nader Metzler, Trevor Strohman等. 二零零六.2.
追寻引擎: 消息寻找实践. 新加坡:机械工业出版社.
[3] 黄永辉, 闫宏飞, 王继民等. 二〇一二. 寻找引擎: 原理, 技术与系统.
新加坡:科学出版社.
[4]  https://en.wikipedia.org/wiki/Web\_search\_engine.
[5]  https://en.wikipedia.org/wiki/Hash\_function.
[6]  https://en.wikipedia.org/wiki/Bloom\_filter.
[7]  Bloom,Burton H. (1970), “Space/Time Trade-offs in Hash Coding
with AllowableErrors”, Communications of the ACM 13 (7):422–426,
doi:10.1145/362686.362692
[8]  https://en.wikipedia.org/wiki/Naive\_Bayes\_classifier.
[9]  https://en.wikipedia.org/wiki/Support\_vector\_machine.
[10]  CHO, J. AND GARCIA-MOLINA, H.2000a, Estimating frequency of
change. ACM Transactions on Internet Technology,Vo1.3, No.3, 2003.8.
[11]  https://en.wikipedia.org/wiki/NoSQL
[12]  https://en.wikipedia.org/wiki/Rabin\_fingerprint 

发表评论

电子邮件地址不会被公开。 必填项已用*标注