设为首页 收藏本站
查看: 1418|回复: 0

Ftp搜索引擎开发实践

[复制链接]

尚未签到

发表于 2015-5-26 11:41:35 | 显示全部楼层 |阅读模式
  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)。基本上是作为实验品进行开发的。现在总结一下。
  一、第一版的构架:第一版上没有什么构架可言,下面是第一版的构架图:


DSC0000.jpg
FtpSearchV1的构架图

  更详细的设计图可看我的另一篇Blog(http://yuandong.iyunv.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 ,也值得一看。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70866-1-1.html 上篇帖子: FTP文件传输协议033(一些命令) 下篇帖子: 超简单不用samba不用任何FTP软件或客户端一分钟搞定linux的FTP服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表