收藏 分享(赏)

20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc

上传人:dzzj200808 文档编号:2791182 上传时间:2018-09-27 格式:DOC 页数:30 大小:4.80MB
下载 相关 举报
20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc_第1页
第1页 / 共30页
20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc_第2页
第2页 / 共30页
20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc_第3页
第3页 / 共30页
20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc_第4页
第4页 / 共30页
20010610海量的基于Web的FTP搜索引擎系统的设计与实现-陈华.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、海量的基于Web的FTP搜索引擎系统的设计与实现The Design Server 接收这种请求并把查询结果送回 Client. 任何一台能够通过某种方式与 Internet 连接的计算机, 都可以通过一定方法成为 Gopher client .海量的基于 Web的 FTP搜索引擎系统的设计与实现5b) 真正意义的搜索引擎最早的真正意义上的搜索引擎是 Lycos,创建于 1994 年的春天,当时Michael Mauldin 将 John Leavitt 的 spider 程序接入到其索引程序中。 Yahoo!也是在当年成立的。而 NCSA Mosaic 出现在 1993 年,Netscape

2、 出现在 1994年。搜索引擎起源于传统的信息全文检索理论,即计算机程序通过扫描每一篇文章中的每一个词,建立以词为单位的倒排文件,检索程序根据检索词在每一篇文章中出现的频率和每一个检索词在一篇文章中出现的概率,对包含这些检索词的文章进行排序,最后输出排序的结果。搜索引擎除了全文检索系统之外,还要有“蜘蛛”(SPIDER)系统,即能够从互联网上自动收集网页的数据搜集系统。蜘蛛将搜集所得的网页内容交给索引和检索系统处理,就形成了我们常见互联网搜索引擎系统。c) Ftp 的搜索引擎I、基于文本的 ftp 搜索引擎: Archie。Archie 能在只知道文件名的前提下,为用户找到这个文件所在的 FT

3、P服务器的地址。Archie 实际上是一个大型的数据库,再加上与这个大型数据库相关联的一套检索方法。该数据库中包括大量可通过 FTP 下载的文件资源的有关信息,包括这些资源的文件名、文件长度、存放该文件的计算机名及目录名等。 使用 Archie 服务器有三条途径,常用到的是:通过远程登录到 Archie 主机,用 Archie 作为登录名。一旦登录成功,一个Archie 程序将自动执行,这时一次输入一条命令,告诉 Archie 想查寻的内容,Archie 将检索自己的数据库并显示检索的结果。如果用户对自己想要的东西并不太清楚,Archie 还提供“whatis”服务项目,该服务提供成千上万个程

4、序、数据文件和文档的简短说明。 II、基于 Web 的 Ftp 搜索引擎。WWW 的出现改变了 Archie 在文件搜索方面的统治地位,在美观、方便的 WWW 页面上搜索 ftp 文件成为用户的一大需求。在功能上,基于Web 的 ftp 搜索引擎实现的功能与 Archie 基本一样,都是对用户提交的查询匹配串找到可以下载的 ftp 站点链接。但基于 Web 的 ftp 搜索引擎也有很多特色的功能,比如天网 ftp 搜索引擎的文件分类功能等等。基于 Web的 ftp 搜索引擎也采用了很多 WWW 搜索引擎的策略,比如使用 Spider 自动收集数据,采用倒排索引,智能换页链接技术以及大型 ftp

5、 搜索引擎必须采用的分布收集和服务技术。目前国内国际 ftp 搜索引擎已有不少,但在系统底层上有区别的只有几种,其中较为有名的有北京大学天网搜索引擎的 ftp 子系统,华南木棉的 ftp 搜索系统,号称全球最大的 ftp 搜索引擎的 ,以及 使用的 的 fastftpsearch,小型网站常使用的 NOSEY PARKER 系统以及其他一些搜索引擎。三、天网 ftp 搜索引擎的现状a) 天网 Ftp 搜索产生的起源与发展历史。在天网 1.0 系统里,有一个简单的 ftp 搜索引擎,它只扫描几个教育网的 ftp 站点,算法上基本由 unix 命令组成,只能提供简单的字符匹配功能,而且界面很简

6、单。由于用户对 ftp 搜索的需求增加,我们在 1999 年秋开始海量的基于 Web的 FTP搜索引擎系统的设计与实现6了 ftp 搜索引擎的项目,并于 2000 年春交付了一个可以服务的百万级 ftp搜索引擎,它搜索了 30 多个站点,提供 150 万的文件条目检索。根据用户反馈和用户查询行为的分析,经过不断改进,在 2000 年秋 ftp 搜索引擎和天网的 www 搜索引擎同时升级并更换主页界面,提供了更为人性化的查询界面和结果界面,系统也更为稳定健壮。2000 年冬,天网 ftp 搜索引擎开始进行从百万级到千万级的改变。直到 2001 年春,一个搜索了国内3000 多个 ftp 站点,提

7、供 1300 万文件条目索引,并有分类快捷方式系统的全新的天网 ftp 搜索引擎提供服务了。b) 天网ftp搜索引擎的现状i. 提供的功能天网 Ftp 搜索引擎与其它 ftp 搜索引擎相比,最大的特点就在于它的功能强大。尤其其中的文件类型过滤和快捷方式系统是所有 ftp 搜索引擎中独有的。目前天网 ftp 所提供的各种功能包括:1. 文件类型的分类目前文件类型分类分成图象、声音、视频、压缩、文档、程序、源代码、目录等。文件分类的标准是按文件的扩展名。由于天网 Ftp 搜索引擎有特有的文件分类功能,使得我们在搜索时精确度更高,比如要查电影“垂直极限” ,只需输入名字“垂直极限” ,选择“视频”类

8、型,则各种文件类型的“垂直极限”的下载都找出来了。如果没有类型过滤,则如果用户输入过于简单的话,可能查出的结果未必都是电影,如果用户输入包括了扩展名的话,则查询结果显然又少了很多,而且非计算机专业用户往往并不知道某个文件类的扩展名有些什么。另外,在搜索的结果页面里,天网 ftp 搜索引擎使用了生动的图标区分各个类型的文件,使得文件所属类型一目了然。文件分类已经成为了天网搜索引擎最强大又最有特色的功能。2. 时间过滤可以精确到年月日的文件最后修改时间过滤。这个功能在寻找特定时间的文件时很有用。3. 大小过滤这个功能与文件类型过滤功能的集合,可以帮助寻找特定类型的文件。比如同为“.dat”文件,有

9、的是电影格式,有的是普通的数据文件。但一般而言,大于 40M 的“.dat”文件应该是电影。当我们加上这个限制的时候,也就可以找到扩展名为“.dat”的电影了。4. 精确匹配精确匹配对于查找短文件名的文件比较方便,系统缺省使用是子串匹配,因为子串匹配更符合普通人的思维。5. 站点限制在天网搜索的 3000 多个站点里,用户可以选择其中的某个站海量的基于 Web的 FTP搜索引擎系统的设计与实现7点,仅仅对其中的文件进行查找。这个功能使得用户可以只搜对他(她)而言比较快的 FTP 站点,或他(她)比较喜欢的站点。6. 结果中查询功能很多 WWW 搜索引擎支持结果中查询的功能,但大部分 Ftp搜索

10、引擎并不支持结果中查询。天网 Ftp 搜索引擎采用巧妙的算法实现了结果中查询的功能,使用户可以逐步缩小搜索范围,最终得到想要的结果。7. 支持常用的*,? ,与,并 操作由于大部分用户的查询都不是十分精确的,*,?,与,并 这四个操作就显得十分重要。与的操作符是空格,并的操作符是逗号。这些操作的结合可以产生令人惊奇的结果,比如要查羽泉的最美,输入“羽泉 最美” ,则用“羽泉”的查询结果和“最美”的查询结果作“与”操作,得到了用户想要的结果。8. 多语言版本天网 Ftp 搜索引擎在结果输出时采用模板技术,使得提供多语言、多界面的搜索结果页面成为可能。目前天网 Ftp 搜索引擎支持简体中文和英文,

11、并保留支持其它语言和其它模板的接口。9. 快捷方式系统快捷方式系统是天网 Ftp 搜索引擎独有的功能。目前其它的Ftp 搜索引擎仅仅提供了复杂的表单供用户提交查询,却没有考虑到广大搜索引擎用户大部分是普通网民而非计算机专业人士,使用上的简单化和傻瓜化是软件发展的必然。因而天网 Ftp 搜索引擎建立了快捷方式系统,用户可以不输入任何字串,用鼠标就可以找到无数电影、音乐、程序、图片等等软件。而且快捷方式系统包含了注册功能,用户可以注册自己关心的软件,以便其它用户可以很方便的得到搜索结果。同时,我们对每个快捷方式的点击计数,在显示每一类快捷方式的时候排序,这样对于用户的非特定查询十分方便ii. 数据

12、量1. 站点数量在 3000 以上站点列表来源于手工获得和机器扫描,由于扫描了国内大部分网段,因为可以说天网 ftp 搜索引擎可以查到几乎国内所有的 ftp站点。2. 文件条目 1300 万左右据国外的统计,全球 ftp 站点文件数目约一亿两千万,也就是说天网 ftp 搜索引擎已经搜集到全球十分之一强的 ftp 网站。对比已知的若干 Ftp 搜索引擎,我们可以说天网 Ftp 搜索引擎已经是国内最大的 Ftp 搜索引擎。4. 快捷方式约一千条这个数目将随着用户注册的增加而增加。目前已经有 528 条电影快捷方式,295 条音乐快捷方式,375 条程序下载,59 条开发资海量的基于 Web的 FT

13、P搜索引擎系统的设计与实现8源快捷方式。iii. 访问量1. 日页面下载量在 3 万左右从 2001 年 5 月 5 日开始,我们记录了页面下载的总数,并定期计算每日页面下载量,下表(图 1)为我们记录的页面下载日志统计:时间 页面下载总数 平均每日下载量= = =2000.05.05 305 3052000.05.06 1011 7962000.05.10 10625 24032000.05.11 16225 56002000.05.13 23494 36342000.05.15 30147 33262000.05.17 37883 38682000.05.19 41797 19572000

14、.05.20 46757 4960 2000.05.22 53410 33262000.07.21 138562 14192000.07.22 142548 39862000.08.16 202286 23892000.08.26 227974 25682000.09.04 263068 38992000.09.05 271261 81932000.09.07 277893 33162000.09.24 377003 58302000.09.29 410703 67402000.10.17 511067 55752000.11.02 660012 93092000.11.06 702001 1

15、04972000.11.20 851550 106822000.11.23 880054 95012000.11.24 893388 133342000.11.27 925253 106212000.12.11 1131402 147242000.12.16 1213852 164902000.12.18 1252818 194832001.01.05 1502691 14698 2001.02.14 1800674 74492001.03.06 2108148 153732001.03.09 2177719 231902001.03.12 2265346 292092001.05.13 36

16、79936 292092001.05.19 3855190 29209海量的基于 Web的 FTP搜索引擎系统的设计与实现9图【1】 天网 ftp 搜索引擎用户访问日志从上表可以看出,天网 ftp 搜索引擎从最初的每日访问量只有几百,上升到现在的每日 3 万,经历了约一年的时间。在这一年里,天网 ftp 的用户随着天网的不断改进不断增加。而且,其中访问量下降的阶段都是学校的暑假和寒假,由此得出访问天网 Ftp 搜索引擎的大部分用户是教育网用户。2. 日访问人数在 1.5 万以上由每个用户平均查询一到两次算,估计天网 Ftp 搜索引擎现在每日的访问人数已经达到 1.5 万以上。而天网搜索引擎总的

17、每日访问人数在 4 到 5 万之间,也就是说天网 Ftp 搜索引擎已经成为天网搜索引擎系统十分重要、不可缺少的部分,也是天网搜索引擎越来越受用户欢迎的一个因素。四、海量 ftp 搜索引擎的系统结构设计a) 系统的结构设计:四大模块和五个数据库参考 WWW 搜索引擎的一般系统结构,我们设计了如下的四个模块:搜集建库模块、搜索服务模块、CGI 和 WWW 页面模块以及快捷方式系统。其中使用了五个数据库包括:站点列表数据库、文件类型数据库、素材库、索引库、快捷方式数据库。系统程序和数据的物理位置分配主要分七个部分:1) respath:源数据目录。包括搜集建库的程序 FtpCollect,站点列表库

18、,文件类型库和素材库。同时也存放搜集程序的日志。2) basepath:主目录。包括搜索服务器 FtpServer,索引库。其中索引库由三个子库组成,它们是:用于显示的 Display 库、用户过滤的Content 库和用户匹配字串的 Index 库。同时也存放建库程序的日志,搜索服务器的日志,页面下载的日志。3) manage:管理程序目录。包括快捷方式管理系统,站点列表获得程序FtpGetSite,IP 站点列表和域名站点列表合并程序CheckSite、搜索服务器状态监控程序 ServerKeeper 等等。其中快捷方式系统包括用户注册项过滤器 ItemFilter 和快捷方式条目管理 I

19、temManage。4) scripts:CGI 目录。包括提供服务用的 CGI 和快捷方式系统中的注册 CGI Submit.exe、条目显示 CGI TxtSearch.exe,条目点击计数CGI FtpCount.exe 等等。5) wwwpath:WWW 页面目录。包括主页面(中英文) ,搜索结果页面模板(中英文) ,复杂搜索页面模板(中英文) ,文件分类标志图片等等。海量的基于 Web的 FTP搜索引擎系统的设计与实现106) cachepath:搜索结果存放的缓冲目录。7) SQL 数据库系统。目前使用的是 MS SQL Server 7.0 系统。用于存放快捷方式系统里的数据。系

20、统结构关系如图 2:传送请求发送请求回送结果发送请求回送结果客户方 服务方快捷方式登记FTP文件条目搜集程序快捷方式数据库站点列表数据库文件类型数据库FTP 站点列表获得程序快捷方式管理系统用户接口索引数据库搜索服务器FTP文件条目建库程序快捷方式系统素材数据库海量的基于 Web的 FTP搜索引擎系统的设计与实现11图【2】 海量 ftp 搜索引擎系统结构设计图b) 数据库功能和结构说明i. 文件类型库为了进行文件按扩展名分类,建立了文件类型数据库。它对每类文件给于一个编号以及属于该类型的所有扩展名。目前各分类的扩展名包括:1)图象: jpg, gif, bmp, jpeg, pcx, tif

21、, tiff, wmf, psd, tga, pic, png, pcd, dib, rle, iff, lbm, ilbm, jpe, jif, dcx, ico2)声音: mp3, wav, cda, mid, au, mp1, m3u, mjf, as, voc, xm, s3m, stm, mod, dsm, far, ult, mtm, mp2, mpa, mpga, 669, aac, mp4, vqf, pls, xpl, lrc, rmi, midi, snd, aif, aifc, wma, wax, aiff, rms3)视频: mpeg, mpg, avi, rm, sw

22、f, ram, rmm, ra, rmj, vob, asf, asx, wvx, wmv, wm, m1v, wmp, ivf, smi, mpv2, mp2v, smil, rp, mpv, ssm, rv, mpe, rf, rt4)压缩: zip, arj, gz, tar, tgz, cab, z, arc, b64, bhx, hqx, lzh, mim, taz, tz, uu, uue, xxe5)文档: txt, doc, htm, html, ppt, exl, mdb, asp, asa, php, js, rtf, wri6)程序: exe, com, bat, dll

23、, class, out, ocx7)源代码: cpp, c, h, hpp, pas, bas, java, asm, perl, inc, cxx, tli, tlh, hxx, inl, def, odl, idl 100)目录。目录类型由文件条目属性决定。0)其它。所有不在上述范围内的文件归类到其它中。文件类型库保存在FileType.txt。格式上采用文本格式,例如:0 图象 photos jpg, gif, bmp, jpeg1 声音 auidos mp3, wav, cda, mid这个库只在数据搜集程序中用到。ii. 站点列表库站点列表库保存在下的 sites.txt 里,每一

24、行作为一个站点地址以文本格式保存。站点列表来源于站点获得程序扫描得到的 IP 地址列表ipsites.txt 和手工产生的有域名的地址列表namesites.txt 经过 CheckSite.exe 程序合成产生。站点列表库用于确定搜集程序搜集范围和建库程序的建库范围。目前站点列表库大约有三千多个站点地址。iii. 素材数据库素材数据库是由搜集程序产生的简单搜集结果。搜集程序启动多个线程同时访问多个 ftp 站点,并行的将各个站点得到的文件条目经过简单的加工用存放在各个站点对应的素材库里。比如 站海量的基于 Web的 FTP搜索引擎系统的设计与实现12点的文件条目信息保存在 文件内。每个文件

25、条目按文件名、最后修改时间、文件大小、站内路径、文件类型以一行行字符串的形式保存在对应的素材库里。例如:halfsize.jpg 文件名19700101 最后修改时间13421 文件大小(byte)/incoming/tools/htmledit/ 站内路径1 文件类型(图象)由此可见,素材库是一个非结构化的数据库,这种结构能够适应长文件名情况,而在空间利用上也相对比较充分。而如果采用固定大小的结构化数据库,则文件名和路径的长度就不得不作限制,最终导致不能正确访问下载地址或者可能浪费大量的存储空间。iv. 索引数据库索引数据库是直接用于搜索的数据库,它关系到搜索服务的速度与效率。它由用于显示的

26、 Display 库、用于过滤的 Content 库和用于匹配字串的 Index 库组成。我们采用双字母倒排表的方式组织索引表。Index 数据库中包含 256*256 个双字母索引文件,每两个字母对应一个索引。其中 Content 库和 Index 库常驻内存,Display 库只在输出结果时才被打开读取。对每一个 FTP 站点的文件条目,将其文件信息如创建时间,大小,文件类型等非字符串定长数据以及一个指向显示文件中对应的文件名和路径字串起始位置的偏移指针(DisplayOffset)记录在 Content 库里,由数据在 Content 库的位置获得该文件的唯一编号(ID ) 。同时在文件

27、名的每两个连续字母对应的双字母索引里生成以ID 为高 24 位,该双字母组在文件名内的偏移为低 8 位的 32 位索引项。Content 库是结构化的库,保存在content.dat 里,它的条目结构为typedef structchar filetype; /文件类型long filesize; /文件大小long4 site; /所在站点编号long createdtime; /创建时间 ,如 1999 年 2 月为: 199902unsigned char filenamelen; /文件名长度long displayoffset; /对应的字串表示在 DISPLAY 库里的偏移File

28、Content;/Index 库包含 256*256 个双字母倒排表,保存在文件index.dat 里,它的结构为_int32 indexoffset256*256+1; /每个双字母表在库里的偏移和库结尾的偏移_int32 index0_0.; /0 号字母和 0 号字母组成的索引表_int32 index0_1.; /0 号字母和 1 号字母组成的索引表海量的基于 Web的 FTP搜索引擎系统的设计与实现13_int32 index0_2.; /0 号字母和 2 号字母组成的索引表._int32 index255_255.; /255 号字母和 255 号字母组成的索引表每个双字母倒排表的

29、长度可以由 indexoffset 的相邻两项计算得到。倒排表由一系列 32 位结构组成,这个 32 位结构为typedef struct _int32 ID:24; /ID 由该文件条目在 Content 库的编号决定_int32 OffsetInFileName:8; /双字母在文件名里的偏移 IndexItemStruct;Display 库为非结构化库,以适应无限长度文件名和路径名情况。Display 库保存在display.dat 里,它的每个条目的结构定义为halfsize.jpg 文件名19700101 最后修改时间13421 文件大小(byte)/ Ftp 路径1 文件类型(图

30、象)v. 快捷方式数据库快捷方式数据库由三个子库组成,用户注册查询项的临时库:TmpFileItem,快捷方式分类层次库: TypeList,快捷方式条目库:FileItem。所有的快捷方式数据库都在 Microsoft SQL Server 7.0 系统上实现。临时库 TmpFileItem 的结构:IID int /用于区分不用项的系统自动 IDName char64 /用户注册查询项的名字,比如 “rm 电影”ToMatch char254 /用户注册查询项的内容,比如 “word=*.rm”TypeID int /该注册项的类别号,比如 “电影、MTV”类快捷方式条目库 FileIte

31、m 的结构:PID int /该查询项的类别号,比如“电影、MTV”类Name char64 /查询项的名字,比如 “rm 电影”海量的基于 Web的 FTP搜索引擎系统的设计与实现14ToMatch char254 /查询项的内容,比如 “word=*.rm”DownloadCount int /用户点击该条目的次数IID int /用于区分不用项的系统自动 ID快捷方式分类层次库 TypeList 的结构:TypeID int /类别的编号,如果整百则为主类,否则为子类Name char64 /类别的名称 例如:100 电影、MTV101 爱情102 动作103 MTVc) 搜集建库模块i

32、. 搜集建库过程说明搜集建库运行的时机与频率是保证数据实时性的重要因素。由于搜集时要访问众多的 FTP 站点、进行大量的网络数据传输,因而搜集应在网络速率比较快的时候进行,一般来说凌晨 3、4 点是最佳时机。为了加快搜集的速度,我们采用多线程方式同时搜集多个站点的文件信息,并指定一个超时时间,以结束所有搜集,并转入建库程序。搜集程序得到的数据保存在素材库里,以被建库程序使用。建库程序将素材数据库转化为临时的索引数据库。完成后通知服务器暂停搜索服务,用更改名称的方法将临时的索引数据库迅速切换为最终索引数据库,服务器重新读入索引数据库的索引库 Index 和内容库 Content,开放对外搜索服务

33、。搜集建库过程如图 3:定时启动搜集多线程搜集 素材库单线程建库临时的索引库停止搜索服务切换数据库海量的基于 Web的 FTP搜索引擎系统的设计与实现15图【3】 搜集建库流程图ii. 站点获得策略Ftp 搜索引擎与 WWW 搜索引擎最大的区别就在于 Ftp 站点内没有与 WWW 页面相对应的超链接,因而 Ftp 搜索引擎的站点获得策略就不能模仿搜索引擎业非常时兴的超链分析技术。在北大天网 Ftp 搜索引擎里,我们采用了 IP 扫描技术和手工添加技术的中和。一方面,我们用GetFtpSite.exe 扫描全国网段,比如北大的 162.105 下的所有可能 IP 地址,把每个提供了 ftp 服务

34、的站点 IP 保存到ipsites.txt 里。另一方面,我们依靠搜索引擎用户提供给我们的有域名的 Ftp 站点名称,以及管理员自己找到的常用的 ftp 站点地址,存放到namesites.txt 里。然后调用CheckSite.exe 合并ipsites.txt 和namesites.txt,消除其中的 IP 地址重复的项,并代之于域名。同时把没有扫描到的已知 ftp 站点添加进去,最后产生sites.txt 文件,也就是搜集建库使用的 ftp 站点列表。为了使得 IP 扫描到更稳定开放的机器,我们一般在晚上启动 IP 扫描程序GetFtpSite.exe。iii. 并发搜集策略由于 ftp

35、 搜索引擎搜集的站点数目极其巨大,目前已经有大约三千多个 ftp 站点在搜集范围内,如果采用单线程显然是不现实也没有必要的。我们的 ftp 搜索引擎采用有限的多线程搜集模式,一般同时启动约三百个线程,并精确计算当前运行的线程总数,每十分钟检测一次启动线程数是否达到三百个,如果没有,则再启动新的线程搜集新的站点。线程的数目一方面受限于系统的最大线程能力,另一方面则受限于所有线程打开资源的总数。由于在天网 ftp 搜索引擎中,每个搜集线程至少打开一个文件,因为线程总数受限于系统可以打开的文件总数。因而我们经过测试和比较,得到同时打开三百个线程是最佳的。每个线程打开的这个文件就是素材库里一个站点对应

36、的素材文件,比如 它所对应的素材文件就是 ,由于每个线程所写的资源各自独立,因而并不会有共享冲突。iv. 分布搜集策略在最新的 Ftp 搜索引擎里,为了应付可能发生的系统内存或者硬最终的索引库启动搜索服务,完成海量的基于 Web的 FTP搜索引擎系统的设计与实现16盘资源不足的情况,我们设计了多台计算机分布搜集分布服务的策略。具体而言就是把一部分 ftp 站点列表给某台计算机,使它对这些 ftp 站点搜集并建库。当用户提交搜索请求时,CGI 程序把请求发送到各个独立的搜索服务器,并把合并后的结果返回用户。对用户而言,他(她)并不会知道后台使用了分布策略,但搜索速度和数据量都大为增强了。v. 多

37、次尝试和断点续搜考虑到国内网络的现状,网络的不稳定性成为影响搜集完整性的重要因素。比方很多 ftp 站点对访问人数作了最大限制,因而一个 ftp 站点当时不能访问并不是说它是不可访问的,我们采用了三次尝试,每次尝试失败后休眠两分钟继续尝试,如果三次之后仍然无法访问,则说明该站点的确访问不了。另一方面,在搜索引擎得到 ftp 文件条目的过程中,也可能发生各种网络故障以致忽然中断,为了解决这个问题,我们采用了断点续搜的功能。当搜集过程中发生异常(Exception)以致搜集中断时,线程休眠两分钟,利用保存的未搜集目录表从中断发生的目录继续搜索,而且这个搜集过程的启动也是三次尝试,但搜集的结果是在原

38、来搜集结果中继续增加。这样,我们就可以得到基本上完整的该 ftp 站点的文件条目列表。vi. 线性的建库过程建库过程是线性的,这是因为要给每一个文件条目一个系统唯一的ID,这个 ID 就是该文件条目在索引库的 Content 子库里的记录号。为了在建库的过程中保存无法预知大小的双字母索引,我们采用临时文件策略,在index 下安双字母建立对应的独立文件,比如双字母 则对应文件为 index4654。这样只要在文件条目的文件名里有字母对则在index4654 里增加一个大小为 32 位的 IndexItemStruct 结构。但是我们打开所有 256*256 个文件以便随时写入新的索引是不可能的

39、,因为可以打开的文件数有限,如果每写一个索引打开一次文件则建库过程将极为缓慢。因此我们采用了缓冲技术,为每个双字母索引建立了一个较小的 Cache,只有当Cache 满的时候才打开并写入对应的双字母索引文件。在所有的 ftp 站点的素材库都转化为临时的索引库后,将index 下的所有文件合并到临时索引库的 index 库里,即tmpindex.dat 文件。vii. 数据库的切换当临时的索引库建完之后,服务器必须停止服务,并释放旧的数据库的锁定,删除旧库,把临时数据库切换成实际使用的数据库,再启动服务。同时删除所有的 Cache,因为它们已经无效了。目前在 1300万文件条目的数据量下,切换整

40、个数据库所需的时间大约几分钟,基本不影响日常的搜索服务。d) 搜索服务模块i. 搜索服务过程说明服务器是系统的核心,必须保证稳定性和高效性。实现高效性的关海量的基于 Web的 FTP搜索引擎系统的设计与实现17键在于使用线程,即一个用户请求使用一个线程处理。由于用户的搜索请求具有随机性和并发性,因而线程互斥、死锁预防、资源的管理等是服务器必须解决的重要问题。另外,对于由于某种原因(如内存不足、I/O 错误等)不能正常完成搜索任务的线程,必须正确而完整的释放它申请的资源(如申请的内存、打开的文件、打开的 Socket 以及线程本身) ,并向用户显示不能完成任务的原因。安全性也是服务器要考虑的一个

41、方面。服务器采用了 TCP/IP 作为与 CGI 通讯的协议,因而可能存在其它程序乃至网络黑客的非法连接。我们可以采用一种简单的身份验证机制保证安全,即 CGI 与服务器连接时先输入一个约定口令,若口令错误,则服务器直接关闭这个非法连接,从而确保了服务器的安全性。服务器会接收到来自 CGI 的搜索请求或搜集建库程序的更新数据库请求,接到更新数据库请求后,服务器暂停接收 CGI 的搜索请求,读入新的数据库,然后继续对外服务。接到搜索请求时,由 CGI 发送来的请求信息确定要匹配的串和过滤信息。由搜索串检查 Cache 是否命中(Cache 是以搜索串为文件名,以匹配结果的所有 ID 为内容的文件

42、) ,若命中,读入 Cache,进行信息过滤,输出结果。否则,重新在数据库里查找,将结果过滤输出,然后将没过滤的结果 ID 串写入以搜索串为文件名的 Cache 文件中。输出结果给 CGI 时,由 ID 找到对应的文件信息记录,并由文件信息记录找到文件名与路径,最后以字符串格式发给 CGI。服务器响应总流程如图 4:图【 4】 服务器响应流程ii. 服务接口说明服务接口是一个 Socket 接口,CGI 程序或者搜集建库程序用它与服务器通讯。当搜集建库程序要求服务器切换数据库时,它只需在对应的 Socket 端口发一个字符格式的“*Ftp Stop*”命令即可。当用户查询时,CGI 在这个端口

43、写一个 SearchStruct 结构,以给出查询参数据更新 暂停服务 读入新数据库 重启服务搜索请求 Cache 检测 过滤输出身份验证 读入 cache执行查找海量的基于 Web的 FTP搜索引擎系统的设计与实现18数。当然,在给这个端口写数据前有一个用户校验过程,以保证服务器的安全性。SearchStruct 结构定义如下:typedef structchar tomatch32; /匹配串long sites4; /受限站点的编号bool CaseSensitive; /大小写敏感标志bool ExactSearch; /精确匹配标志char searchtype; /搜索类型:0 为

44、简单搜索,1 为复杂匹配(有附加条件)char filetype; /受限文件类型long begintime,endtime; /受限时间范围,如 1999 年 2 月为: 19990200long beginsize,endsize; /受限大小范围long showfirst,showmax,resultnum; /显示起始点,最大显示数,结果总数SearchStruct;/iii. 匹配算法查找是基于数据库里双子母倒排表的操作,通过提取两条索引中高24 位(ID 值)相等、低 8 位(字母在文件名中的偏移)有确定差值的索引项获得结果。具体而言,对连续的三字母串(如 abc ) ,取后一

45、双字母索引(bc )与前一双字母索引(ab) 中 ID 相等的项,若后一索引(bc)中的偏移大 1,则为所求结果的一项。而对于 ab?cd、ab?cd 等,则取偏移大于 2、大于 3 即为所求结果。对于 ab*cd, 则要求在后一索引(cd)中的偏移大于它在前一索引(ab) 中的偏移。iv. Cache 策略为了加快速度和实现结果中过滤的功能,我们把搜索结果暂存在Cache,以便下次使用。Cache 保存的是字符串匹配的结果,而不是过滤后的结果。用文件形式保存结果索引做为 Cache,以匹配串的 16 进制码作为文件名存放在目录下。Cache 文件的存在周期为 2 个小时,每隔两个小时服务器自

46、动删除所有最后访问时间超过两个小时的 Cache 文件。另外,在 CGI 参数里我们有一个结果总数,这个结果总数有SearchStruct 结构传递到服务器。当服务器发现 ResultNum 不为-1 时,就假设这个 ResultNum 是已知的结果总数。这样进行匹配结果的属性过滤时就没有必要从头过滤到结尾,只需过滤到需要显示的范围(showfirstshowfirst+showmax)就可以了。这是一个虚的 Cache 策略。应用 Cache 的效果是十分显著的。例如查询“c*.jpg”时,如果Cache 没有命中是 1734 毫秒查出 45417 个结果,Cache 命中时是 31 毫秒,

47、当 CGI 参数里把结果总数加进去时是 16 毫秒。由此可见 Cache 是多么重要。v. 强大的过滤功能的实现1. 文件类别过滤海量的基于 Web的 FTP搜索引擎系统的设计与实现19文件类别过滤功能是基于文件分类。在搜集程序建立素材库的时候,就对每个文件条目的文件类型进行归类,目前文件类型分类分成图象、声音、视频、压缩、文档、程序、源代码、目录和其它。在建库的时候,文件类型信息写入每个文件条目的 Content 库的结构里。当字符串匹配完成进行文件类别过滤的时候,只要SearchStruct. Searchtype 与 FileContent.filetype 相等或者SearchStruct. Searchtype 为 0 即所有类型则过滤成功,这个条目就作为结果的一项输出给用户。2. 文件大小过滤缺省的大小过滤是 0 到 1.G 的范围。用户可以用复杂查询表单指定起

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报