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)。基本上是作为实验品进行开发的。现在总结一下。

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


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,如需转载请自行联系原作者

Ftp搜索引擎开发实践相关推荐

  1. 基于Lucene垂直搜索引擎的研究与开发实践报告

    目录 一.垂直搜索引擎概述 二.项目概述 三.关键技术 3.1 Lucene 3.2 全文检索 四.系统设计 4.1 实现全文检索 4.1.1.Lucene 实现全文检索的流程 4.2 可视化界面设计 ...

  2. 转 FTP搜索引擎的设计与实现(优化版)

    width="336" height="280" src="http://www.zealware.com/csdnblog336280.html&q ...

  3. 搜索引擎系统学习与开发实践总结

    导读: 搜索引擎系统学习与开发实践总结 2006-07-23 20:14 一.搜索引擎概述 搜索引擎的发展历史 在互联网发展初期,网站相对较少,信息查找比较容易.然而伴随互联网爆炸性的发展,普通网络用 ...

  4. Android软件安全开发实践(下)

    Android软件安全开发实践(下) Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网 ...

  5. 《Linux C/C++服务器开发实践》简介

    #好书推荐##好书奇遇季#Linux网络服务器编程入门书<Linux C/C++服务器开发实践>,京东当当天猫都有发售.416页厚书,定价99元,打折一下更便宜. 本书从五大服务器编程基础 ...

  6. SF超高速FTP搜索引擎(哈尔滨工业大学)

    SF超高速FTP搜索引擎是全国新一代超高速FTP全站搜索引擎之一,索引速度远高于同类产品,在两千万候选项中查询两百万结果只在毫秒量级即可完成.并且支持多种排序方式.站点快照等贴近用户使用的功能. 本搜 ...

  7. 在Linux系统下建立强大的FTP搜索引擎

    Linux正大行其道,不少朋友相信已经用它架设过各种服务,什么Web.FTP.BBS等等等啦,这次,我向大家介绍另外一个在linux下运行的服务器软件----NoseyParker,一个强大的FTP搜 ...

  8. 20189200余超 2018-2019-2 移动平台应用开发实践第五作业

    20189200余超 2018-2019-2 移动平台应用开发实践第五作业 输入/输出 输入输出可以说是计算机的基本功能.作为一种语言体系,java中主要按照流(stream)的模式来实现.其中数据的 ...

  9. Elasticsearch之自定义同义词开发实践

    1.什么是同义词查询 ES(Elasticsearch)作为一个开源的.高扩展的分布式全文检索引擎,具有近实时的索引.搜索和分析等优点.用户在使用ES时,主要青睐其快速的查询性能.不同于传统的数据库, ...

  10. 基于MaxCompute+开放搜索的电商、零售行业搜索开发实践

    简介:搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题.基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量 ...

最新文章

  1. Fortinet_OS怎么通过TFTP烧FOS
  2. linux 命令输出保存为文件的三种方式
  3. u盘扩容软件_扩容盘的认识与检测和量产还原
  4. 【正一专栏】爱是一种信仰
  5. jenkins 新手入门安装失败_树莓派安装jenkins,安安静静做个持续集成打包机
  6. springbboot加密打包_Spring Boot 配置 Security 密码加密
  7. redis缓存穿透,缓存击穿与缓存雪崩详解
  8. DJL | DJL 如何正确打开 [ 深度学习 ]
  9. 2017-2018网络攻防第四周作业
  10. Java实现动态代理的两种方式
  11. 12. CSS 字体
  12. 移动端h5页面监听手机横屏
  13. 单目3D目标检测之入门
  14. 找到弹窗广告所在的程序文件位置
  15. 将linux系统移动硬盘,着手打造你的随身系统---将linux装进移动硬盘
  16. js练习之--数组方法,数组实现文字内容高亮、替换!
  17. powerbi 线性回归_精选 | 实用炫酷的Power BI自定义图表
  18. MOSFET管驱动电路的设计
  19. 支持响应式手机端jQuery图片轮播插件unslider
  20. 微信小程序使用MQTT远程控制单片机——阿里云物联网平台

热门文章

  1. 为什么计算机能读懂 1 和 0 ?
  2. win8/win10任务栏/语言栏跳动/闪烁
  3. 阿里云服务器怎么开发票?
  4. 基本农田卫星地图查询_中国北斗已启用全球服务,如何使用手机北斗卫星导航?...
  5. hourglass论文_论文笔记 Stacked Hourglass Networks for Human Pose Estimation
  6. Pytorch下基于lstm的股价预测
  7. 时区,GMT时间,UTC时间,UNIX时间戳
  8. OpenFeign报文内容大报错: {“code“:1,“msg“:“JSON parse error: Illegal character ((CTRL-CHAR, code 31))
  9. 408计算机组成原理学习:数据的表示与计算
  10. 网站攻击有哪几种方式?如何处理