基于NCFTP和Lucene的FTP搜索引擎的设计及实现

来源 :光盘技术 | 被引量 : 0次 | 上传用户:blue_lnan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对数量庞大的教育网FTP资源检索困难的问题,提出一种基于开源软件NCFTP和Lucene实现对教育网FTP服务器进行索引并提供检索服务的FTP搜索引擎的设计及实现的方法。用开源软件NCFTP从FTP服务器上抓取FTP站点信息,并把抓取的信息转化为Lucene数据接口规定的文档(Document)类型,作为Lucene的数据源,并且采用基于字典的正向最大匹配中文分词法进行索引的建立及信息的检索。该方法已对郑州大学六个FTP站点建立索引,并向全校师生提供FTP检索服务,取得了良好的效果。
  关键词:FTP搜索引擎;NCFTP;Lucene;有限状态自动机
  
  The Design and Implement of Ftp Search Engine Base on NCFTP and Lucene
  ZHAO Ke ,LU Peng, LI Bing-yi
  (School of Electrical Engineering , Zhengzhou University,Henan Zhengzhou 450000)
  Key words: FTP Search Engine;NCFTP; Lucene;Finite State Automata
  
  教育网有着丰富庞大的FTP资源,但是却没有提供相应的检索服务,而Windows操作系统自身的基于匹配模式的检索效率非常低下,本文针对该问题,提出了一种基于开源软件NCFTP和Lucene实现对FTP服务器进行索引并提供检索服务的FTP搜索引擎的设计和实现方法,该方法用配置好的有限状态自动机,自动将NCFTP抓取的信息转化为Lucene可识别的文档(Document)类型,作为Lucene的数据源,并且在索引和检索过程中采用基于词典的正向最大匹配中文分词法,保证了检索的准确性。该FTP搜索引擎采用的组件大多为开源免费组件,既节约了成本,提高了开发效率,又便于今后的维护和扩展,保证系统的稳定性。该方法已对郑州大学六个FTP站点建立索引,并向全校师生提供FTP检索服务,取得了良好的效果。
  
  1 FTP搜索引擎结构
  
  FTP搜索引擎主要由数据采集、数据分析和索引维护及数据查询等模块组成。如图1所示,该引擎首先用NCFTP从FTP服务器抓取服务器、文件及目录等各种信息保存到本地,经过处理转化后提供给Lucene分析建立索引,并将索引文件保存到本地。当客户端发送搜索请求时,经过WEB服务器对输入关键词处理后将搜索请求输入到Lucene进行查询,并将查询结果以友好的界面返回给客户端,完成搜索。
  


  2 FTP站点信息的采集及处理
  
  2.1用NCFTP进行信息采集
  NCFTP是一个开源的实现FTP的协议的软件,他可以在命令行下进行各种操作,因此广泛应用于UNIX、WINDOWS等各种操作系统。
  信息采集对于FTP搜索引擎是一个至关重要的环节,采集的信息的要完整、准确、清晰。因为NCFTP可以在命令行下进行操作,因此它可以很方便地被各种编程语言调用。当FTP搜索引擎接收到抓取请求时,将需要抓取的FTP站点信息输入到NCFTP中进行抓取,并将抓取信息保存成TXT格式储存到本地。例如要抓ftp://tv.zzu.edu.cn/站点的所有信息,可以使用如下命令:
  ncftpls.exe -R ftp://tv.zzu.edu.cn/ > e:\list.txt
  该命令把ftp://tv.zzu.edu.cn/站点的整个目录和文件的树形结构抓取下来保存到E盘list.txt文件中。其中命令行参数-R的意义为抓取整个站点的目录和文件的树形结构。
  2.2抓取信息的格式
  抓取的站点信息格式如下:
  .\办公软件:
  10-29-0806:34PM<DIR> WPS
  08-24-0805:02PM<DIR>编辑软件
  .\办公软件\WPS:
  08-24-0801:19PM<DIR>软件信息
  10-17-0806:56PM29420592 wps2007.exe
  11-12-0212:00AM975 使用必读.txt
  其中分为两种记录,一种以“.”开头,说明此条记录为下面文件或目录的父目录;另一种以数字开头,说明该条记录为文件或者目录,该记录分为三段,第一段为最后修改时间,第二段为标记字段,若该标记为<DIR>,表示该条记录为目录;否则该标记为文件的大小,以bit为单位,第三个字段为文件或目录名称,若是文件,则包含了文件的类型
  2.3用有限状态自动机处理抓取信息
  对于抓取信息的处理可以将所有记录一次性读取到缓存字符串中,然后逐条取出进行处理,这样避免了频繁的IO操作,从而提高了处理效率,又减小了在IO过程中出现异常的概率。
  对于记录的处理,可以采用有限状态自动机和正则表达式进行字符串的处理及有效信息的提取,这样可以将有效信息封装到FTP搜索引擎指定的类中,该类可以很方便地作为LUCENE的数据源。
  就本项目而言,项目定义了一个File类,用于封装提取出来的有效信息。该类包含有name、type、parentURL、URL、mdate、size等字段,用于存储文件或目录的名称、类型、父URL、本身的URL、最后修改时间以及大小等信息。对于NCFTP抓取的信息,可以采用具有两种状态的有限状态自动机,即初始状态和读取状态。当读取的记录字符串以“.”开头,则将自动机置为初始状态,并将该条记录设置为下面文件或者目录的父目录;否则,将自动机置为读取状态,并用正则表达式对记录字符串进行匹配,若匹配成功,则创建一个File类型的对象,并把提取的有效信息存储到该File类型的对象中去;若匹配不成功,则重新将自动机置于初始状态读取下一条记录。最后,即可把提取出来的所有File对象作为Lucene的数据源,然后将这个对象转化为Lucene可识别的文档(Document)类型输入Lucene进行进一步处理。
  2.4增量式的信息抓取
  本项目中,信息采集采用增量式的采集模式,利用map.txt记录FTP站点与保存FTP站点信息的信息文件的对应关系,当接收到采集请求时,首先在map.txt中检查该站点是否有相对应的信息文件,若没有,则说明先前未对该站点采集过信息,然后将建立一个新的信息文件,并保存该从该站点抓取的信息;若有,则说明先前已经对该站点采集过信息,然后系统只将该站点的信息文件进行更新,而其它站点的信息文件仍不会丢失。这样保证了信息不会在抓取过程中丢失,有利于FTP搜索引擎规模的扩大。
  
  3 基于Lucne的索引建立及处理
  
  3.1Lucene的信息采集
  Lucene不是一个完整的全文索引应用,而是一个用Java写的完全开放源码的全文索引引擎工具包,它提供了灵活多样的API,可以方便的嵌入到各种应用,实现针对应用的全文索引和检索功能。
  Document含义为文档,它代表一种逻辑文件,Lucene无法直接都物理文件建立索引,而只能识别并处理Document类型的对象,Document将作为数据源的集合,向Lucene提供要索引的内容。
  Field含义为字段,一个文档(Document)可以包含多个字段(Field),字段(Field)是用来识别当前数据源的各种属性,存储来自数据源的各种信息。
  该FTP搜索引擎中,已经将NCFTP抓取下来的信息进行提取存储到File类型的对象中,File类型可以很方便将信息转存到Document中的Field中。如图2所示:
  


  转化完成后,即可调用Lucene的索引器IndexWriter对这些Document组成的集合建立索引。
  3.2倒排索引的建立
  倒排索引是一种面向单词的索引机制,通常它由词(关键字)和出现情况两部分组成,对于索引中的每个词(关键字),都跟随一个列表(位置表)和出现频率。
  例如,假设两篇文档:
  A:Its color is red.
  B:Red is a kind of color.
  


  从表格中可以很直观的看出来在倒排索引中,关键字的数量并非随着文本内容的增长也线性增长,这样有利于降低索引文件的占用空间,提高检索效率。
  3.3中文分词的实现
  JE分词组件是一种基于词典的正向最大匹配算法的免费组件,它全面兼容Lucene,提供的简单实用的API,可以方便的被Lucene调用。
  例如,对于句子"据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归",分词效果如下:
  据 | 路透社 | 报道 | 印度尼西亚 | 社会 | 事务 | 部 | 官员 | 星期二 | 29日 | 表示 | 日惹 | 市 |附近 | 当地时间 | 27日 | 晨 | 5时 | 53分 | 发生 | 里氏 | 6.2级 | 地震 | 已经 | 造成 | 至少 |5427人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20万人 | 无家可归 |
  中文分词的正向最大匹配中文分词法原理如下:对于一个字符串S,按从前到后的顺序扫描,对扫描的每一个字,从词库中寻找最长的匹配。例如S=“印度尼西亚社会事务部”,词库中有“印度尼西亚”,“印度”,“社会”,“事务”等词。当扫描到“印”字,那么从“印”字开始,向后分别取1、2、5个字(“印”,“印度”,“印度尼西亚”),词库中最长的匹配为“印度尼西亚”,所以分词取最长的匹配,就从“亚”字后面分开,扫描器下一次扫描“社”字。
  此外,JE分词具有学习功能,可以将新词加入到词典当中,这个功能对于FTP搜索引擎分词功能的扩展具有非常重要的作用。
  
  4 搜索功能的设计及实现
  
  FTP搜索引擎接受到来自客户端搜索请求时,将客户端输入的查询关键字进行处理,如去除多余空格,识别特殊符号等,然后将处理过的关键字输入到Lucene的查询分析器QueryParse r中,该查询分析器将调用由JE分词组成的分析类实现分词,分析后将生成Lucene内部的查询条件类Query,然后将Query传递给IndexSearcher类进行搜索,最后将搜索结果以Hits类型返回。Hits类型为一链式存储结构的容器。
  
  5 结束语
  
  本文中介绍的原理已经应用于郑州大学首个FTP搜索引擎的建设,把郑州大学所有FTP服务器建立了索引并向全校师生提供FTP搜索服务。该FTP搜索引擎基于NCFTP 和Lucene的二次开发利用,并将NCFTP和Lucene做了很好的衔接。由于NCFTP和Lucene都是开源组件,既降低了项目成本,提高了开发效率,又可以方便的进行扩展和完善,稍加修改即可应用于各种提供索引和检索的系统中去,具有很高的应用价值。不过该系统在某些方面仍有些不足,如分布式的信息采集,索引的删除与修改等方面,可以在数据规模,用户体验方面继续完善。
  
  参考文献:
  [1]邱哲,符滔滔.开发自己的搜索引擎[M].北京:人民邮电出版社.2007.
  [2]李刚,宋伟,邱哲.Ajax+Lucene构建搜索引擎[M].北京:人民邮电出版社.2006.
  [3]Bruce Eckel. Thinking in Java[M]. Prentice hall,2003.
  [4]郭一平,向晖,王亮.基于Lucene的Ftp搜索引擎的设计[J].图书情报工作,2006,50(4):122-125.
  [5]Chuck Cavaness. Programming Jakarta Struts[M]. Oreilly & Associates Inc.2004.
  [6]Thomas H.Cormen , Charles E.Leiserson , Ronald L.Rive st,Clifford Stein .Introduction to Algorithms[M]. The MIT Press. 2007.
  (本文系郑州大学大学生创新性实验资助项目,项目编号:2008CXSY086)
其他文献
社会新鲜人是企业新员工中的一个特殊群体。如今,企业里到岗才几个月的大学生纷纷“跳槽”的现象越来越普遍。据介绍,目前企业接收大学生后一两年内流失率在30%以上的达到被调查企业总数的50%,一些单位接收的大学生流失率则高达70%,企业普遍认为他们为大学生高流失率“交的学费太高”。社会新鲜人流失率过高,给企业的管理工作带来很大的困扰。因此企业要思考的是如何帮助毕业生度过“现实震荡期”,有效解决社会新鲜人
期刊
小李:第一天我提早10分钟到了人力资源部,被告知“请稍坐,一会儿有人带你转转”。一小时后,我被领到了一间会议室。几分钟后,里面的面试者发现我不是来应聘的,而是新员工。一阵道歉后,我被领去见我的主管。主管大声地叫来一个文员,让他带我转转。在我被介绍给其他员工的同时,那个文员,一直在抱怨着那个主管的脾气有多坏。吃午饭时,我问能不能请求调到别的部门去,他们说6个月后才能调动。我想我是不是该趁早换个工作了
期刊
领导混合领导风格企业持续卓越    以往人们总是期待领导者如神鬼战士一般十项全能,能扭转企业陨落的命运。但是,竞争加剧,神鬼战士退位,取而代之的能配合特定的形势需求,调整本身领导特质的新时代领导人。他们适时适地通过领导技巧及积极作为,让领导能力更上一层楼,让企业持续卓越。  既往人们总将“领导能力”视为与生俱来的天分,仿佛独行侠(Lone Ranger)的英雄人物一般,融合了勇气、魅力,甚至还带点
期刊
摘 要:SSL服务是目前互联网上常用的安全信息传输服务,尤其在电子商务、电子银行中更是普遍采用,本文介绍了在Windows环境下配置SSL服务的步骤。  关键词:SSL;服务器;数字证书  中图分类号:TP368.5文献标识码:A    How to Configure SSL Servers  CHEN Gang  (Huaiyin engineering,Jiangsu Huaian 2230
期刊
摘 要:伴随着电脑软硬件技术及网络技术的发展,计算机病毒技术、黑客技术及木马技术也取得了很大的发展,这就使得电脑系统随时都有可能出现故障,甚至于瘫痪,这将极大地影响到我们学习、生活、娱乐、办公的效率及质量!WinPE电脑系统维护基本上都是在图形化的窗口下进行,通过"傻瓜式"的点击几下鼠标就可以进行电脑系统的维护操作。  关键词:WinPE;系统;维护  中图分类号:TP393.08    WinP
期刊
在上一期《校园招聘:一场企业与人才的营销战》的专题中,我们给企业提供了如何进行成功校园招聘的理念与实务,让企业有了一个好的开始,可是在人才流动越来越频繁的今天,也许如何留住企业辛辛苦苦招来的人才更重要。  社会新鲜人是企业的新鲜血液,是保持企业活力的源泉,不仅可以解决企业人才缺乏的问题,还能保证企业的长久发展。据统计,全球500强每年都要吸纳几千名社会新鲜人进入企业,有时甚至不惜以高薪提前从名校挖
期刊
语境做好时间管理,不如改正工作习惯    要做好时间管理,与其花时间烦恼如何拟定规划,把最多的工作塞进有限的时间表里,还不如彻底检讨、修正你的工作习惯或方式,减少时间的浪费。  时间管理的第一守则,就是“Do the right thing right.”(用对的方法做对的事情)。  但是多数人只做到前半段,却忘了后半段。翻开许多谈论时间管理的书籍或文章,内容一定是告诉你,如何依据事情的轻重缓急,
期刊
摘 要:介绍基于CAN总线的船舶监控系统的基本结构。重点论述智能测控单元CAN通讯接口设计、CAN控制器外围硬件电路和CAN通信软件的实现。  关键词:现场总线;控制局域网;船舶监控系统;应用  中图分类号:TP273文献标识码:A    The CAN Fieldbus Technology Application in Ship Monitoring System  MA Li,XU Shan
期刊
摘 要:在系统上有许多类型的侵袭,我们一般把侵袭分为三种基本类型:入侵、拒绝服务(DOS)和盗窃信息。网络诞生以来遭受攻击事件不断发生,全球许多著名网站都遭到不名身份的黑客攻击,本文针对几种常见的DOS攻击提出在LINUX环境下的一些防御看法。  关键词:拒绝服务;攻击原理;Linux环境;防御  中图分类号:TP393.08 文献标识码:A    DOS attack principle and
期刊
摘 要:随着Red Hat Linux的迅速发展,Linux系统安全中的可信计算问题显得日益重要,虽然Linux kernel从版本2.6.13开始已经包含了对可信计算的支持,并已有许多Linux项目开始支持可信计算。但可信计算包括的:认证密钥、安全输入输出、内存屏蔽/受保护执行、封装存储、远程证明概念这5个核心技术在一个完全可信的系统中仍是必须的。研究和应用可信计算技术在系统安全方面具有重要意义
期刊