荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: PhilCF (起床.挂站.TSG.下站.睡觉), 信区: NetResource
标  题: 毕业论文四、c搜集建库模块[ZZ]
发信站: 荔园晨风BBS站 (Tue Jun 25 19:11:33 2002), 转信


发信人: chenhua (陈华), 信区: FtpSearch
标  题: 毕业论文四、c搜集建库模块
发信站: 天网搜索论坛 (Wed May 29 22:33:14 2002)

c)      搜集建库模块


i.      搜集建库过程说明

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


ii.     站点获得策略

    Ftp搜索引擎与WWW搜索引擎最大的区别就在于Ftp站点内没有与WWW页面相对应的超
链接,因而Ftp搜索引擎的站点获得策略就不能模仿搜索引擎业非常时兴的超链分析技
术。在北大天网Ftp搜索引擎里,我们采用了IP扫描技术和手工添加技术的中和。一方
面,我们用<manage>\GetFtpSite.exe扫描全国网段,比如北大的162.105下的所有可能
IP地址,把每个提供了ftp服务的站点IP保存到<respath>\ipsites.txt里。另一方面,
我们依靠搜索引擎用户提供给我们的有域名的Ftp站点名称,以及管理员自己找到的常
用的ftp站点地址,存放到<respath>\namesites.txt里。然后调用
<manage>\CheckSite.exe合并<respath>\ipsites.txt和<respath>\namesites.txt,消
除其中的IP地址重复的项,并代之于域名。同时把没有扫描到的已知ftp站点添加进去
,最后产生<respath>\sites.txt文件,也就是搜集建库使用的ftp站点列表。为了使得
IP扫描到更稳定开放的机器,我们一般在晚上启动IP扫描程序<manage>\GetFtpSite.
exe。


iii.    并发搜集策略

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


iv.     分布搜集策略

    在最新的Ftp搜索引擎里,为了应付可能发生的系统内存或者硬盘资源不足的情况
,我们设计了多台计算机分布搜集分布服务的策略。具体而言就是把一部分ftp站点列
表给某台计算机,使它对这些ftp站点搜集并建库。当用户提交搜索请求时,CGI程序把
请求发送到各个独立的搜索服务器,并把合并后的结果返回用户。对用户而言,他(她
)并不会知道后台使用了分布策略,但搜索速度和数据量都大为增强了。


v.      多次尝试和断点续搜

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


vi.     线性的建库过程

    建库过程是线性的,这是因为要给每一个文件条目一个系统唯一的ID,这个ID就是
该文件条目在索引库的Content子库里的记录号。为了在建库的过程中保存无法预知大
小的双字母索引,我们采用临时文件策略,在<basepath>\index\下安双字母建立对应
的独立文件,比如双字母 <46,54>则对应文件为<basepath>\index\46\54。这样只要在
文件条目的文件名里有字母对<46,54>则在<basepath>\index\46\54里增加一个大小为
32位的IndexItemStruct结构。但是我们打开所有256*256个文件以便随时写入新的索引
是不可能的,因为可以打开的文件数有限,如果每写一个索引打开一次文件则建库过程
将极为缓慢。因此我们采用了缓冲技术,为每个双字母索引建立了一个较小的Cache,
只有当Cache满的时候才打开并写入对应的双字母索引文件。在所有的ftp站点的素材库
都转化为临时的索引库后,将<basepath>\index下的所有文件合并到临时索引库的
index库里,即<basepath>\tmpindex.dat文件。


vii.    数据库的切换

    当临时的索引库建完之后,服务器必须停止服务,并释放旧的数据库的锁定,删除
旧库,把临时数据库切换成实际使用的数据库,再启动服务。同时删除所有的Cache,
因为它们已经无效了。目前在1300万文件条目的数据量下,切换整个数据库所需的时间
大约几分钟,基本不影响日常的搜索服务。

--

※ 来源:.天网搜索论坛 http://binglebbs.dhs.org[FROM: 162.105.80.74]

--

      WELCOME TO PC's Home  HTTP://192.168.48.84

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.48.84]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店