Ftp搜索引擎开发实践

简介:

FtpSearch是一个我一时脑细胞抽筋儿想出来的项目。目标也很简单,做一个网站用来搜索中国海洋大学(我的大学)内所有的Ftp服务器上的文件,算一个比较实用的项目吧,也很有意思和挑战性。

本来是想和别人一起合作的,最后基本上是自己写完了。不过前台是叔­­(团队里的兄弟,外号“叔”)写的,光构架变更就要五六次,小地方的改变就不计其数了,快把他逼疯了:需求嘛,变来变去才比较符合实际J。

先说一下项目的需求。

1,      开发背景:海大校园网比较知名的公开ftp服务器可以算是三个:海大官方(ftp://ftp.ouc.edu.cn),海之子的(ftp://211.64.132.235),爱特(也就是我们团队的服务器啦^^,ftp://itftp.ouc.edu.cn)。三个ftp共有的特点就是只有海大内部可以访问。不过海之子的ftp前不久宣布关闭,改为工作人员维护,前台提供网页形式的下载,可以说是毁誉参半吧,所以我们就不考虑它了。据估计,爱特的ftp服务器上大概有20K左右的数据,海大官方的ftp服务器上大概有50k左右的数据。总量只有100k左右,不算大。

2,      需求描述:我们把需求描述为,对于给定的一组Ftp服务器,系统可以根据关键字对其所有的文件进行搜索。这样系统的通用性能就比较高了,起码搜索整个教育网络的Ftp服务器是没有太大的问题(那清华的做过试验)。

3,      其他需求:可以提供基于此搜索引擎的二次开发借口,类似WebServices之类的。计划要用FLA开发一个基于FtpSearch的Mp3 Online Player。

 

第一版可以说已经做完了(http://it.ouc.edu.cn/ftpsearch)。基本上是作为实验品进行开发的。现在总结一下。

一、第一版的构架:第一版上没有什么构架可言,下面是第一版的构架图:

FtpSearchDesign_System.jpg
FtpSearchV1的构架图

更详细的设计图可看我的另一篇Blog(http://yuandong.cnblogs.com/archive/2006/06/25/435148.html)。

从这个图中可以很明显地看出来,这个系统的前台和后台除了使用相同数据库的之外,可以说没有什么联系。很多业务逻辑是重复的。不过本身这个系统就是拿来做实验的,构架图也是整个系统写完之后才开始做的。所以肯定是非常不合适的。

整个系统部署在一台服务器上,当然也可以部署在三台服务器上,不过对于区区100K数据,一台就够了。

二、搜索逻辑。第一版的搜索能力是非常非常地差劲!直接采用MS SQLServer 2000的“LIKE”谓词对数据类型为nvarchar(4000)的Url字段进行模糊查询(Url LIKE "%Keyword%")。不慢才奇了怪了。当数据量为大概100K时,用时经常长达5-6秒,偶尔出现10秒的情况。作为一个搜索引擎,有这样的搜索速度是致命的!第二版计划才用Lucene作为索引,进行查询。

三、Ftp访问。第一版Ftp访问的功能是我比较关注的,因为以前没有做过。最终的解决方案是用第三方的开源组件,在试用了N多的Ftp访问组建之后,最终选定了EdtFtpNet(http://www.enterprisedt.com/products/edtftpnet/),原因就一个:好用。当然这个库也不完美,让他支持中文花了我一下午的时候,如果你需要可以点击这里下载支持中文的EdtFtpNet。至于对这个库其他的问题,可以联系我,咱们单独讨论。还有一点要说的是,既然采用了第三方组件,有一个代理封装一下就是很自然的事情了,这点可以从包设计图中看到。

四、robot的设计。robot采用的是图的深度优先遍历算法。对于每一个Server用一个线程进行搜索。在robot的设计中,最难得是错误的处理,其中重点是两个:一是无效的目录,二是服务器超时。对于前者,采用的是抓异常跳过的办法;对于第二个问题,采用的是对server加时间戳,超时重起线程的办法。

五、调度:系统采用Windows的计划任务作为调度方式(暴汗!),每天晚上12点启动。启动程序后自动遍历目标服务器。遍历目标服务器只用大概30分钟!

六、数据更新:系统对入库的数据未作更新处理,有进无出,过期不管!(继续暴汗!)

 

恩,基本上就是这些了。第二版正在开发当中,不过快要期末考试了,比较慢,估计九月份能做完吧,我会陆续的把第二版的设计方案发在我的Blog上。另外如果需要第一版源代码的朋友可以个我联系^^。

 

PS:当我做完第一版的时候,才知道原来Ftp搜索已经有人做好了,呵呵,比较好的是华中科技大学(http://so.hustonline.net/)。我试着和他们联系过,想要交流一下,可惜没有回音(大概是不屑吧)。还往做过搜索引擎的朋友指点一下。谢谢。

birdshome在评论中提到:SF超高速FTP搜索引擎http://sf.hit.edu.cn/ 。想真正做搜索引擎而不是玩具(像我)的一定要看!

neoragex2002 在评论中提到了开源项目http://sourceforge.net/projects/parker ,也值得一看。

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2006/06/25/435188.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统搭建FTP服务器教程】
现在,你已经成功在Ubuntu系统上搭建了FTP服务器。你可以使用FTP客户端连接到你的FTP服务器,并上传、下载文件。注意,为了安全起见,建议配置SSL/TLS加密以保护数据传输。
63 0
|
5月前
|
Unix Shell Linux
客户端如何查找FTP服务器的用户名和密码
客户端如何查找FTP服务器的用户名和密码
|
6月前
|
存储 网络协议 文件存储
手把手教你搭建Serv-U FTP服务器共享文件并实现外网远程访问「无公网IP」
手把手教你搭建Serv-U FTP服务器共享文件并实现外网远程访问「无公网IP」
|
4月前
|
网络协议 安全 Linux
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
82 0
|
8月前
|
Linux 数据安全/隐私保护
百度搜索:蓝易云【CentOS7系统安装配置FTP服务器详解。]
FTP服务器是一种常用的文件传输协议,它可以通过网络将文件从一个计算机传输到另一个计算机。在Linux系统中,搭建FTP服务器可以方便地进行文件传输。本文将详细介绍CentOS7系统安装配置FTP服务器的步骤。
154 0
|
8月前
|
Java 数据安全/隐私保护
Java——通过Java代码连接ftp服务器
Java——通过Java代码连接ftp服务器
|
3月前
|
存储 运维 程序员
快速搭建一个FTP服务器
快速搭建一个FTP服务器
56 0
|
1月前
|
存储 网络协议 安全
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!