张宇鹏,胡佳男,牛魁元,刘丹凤,尉达辉
(烟台大学,烟台,264005)
摘要:系统实现了对局域网内服务器的共享资源进行精准而快速的检索。此系统建立在J2EE三层架构之上,以XML描述文档作为信息源,利用分布式技术检索出用户需要的信息。系统对分布式结构进行了优化,在分布式结构中创新地采用了服务器对等平行的模式,从根本上解决了因主服务器发生故障引起的系统瘫痪问题;网络中各台服务器之间的通信使用了组播技术,提高了服务器对请求的相应速度;对资源建立了索引,支持全文检索;对检索过程进行了各种优化;对各种类型的文档进行转换,用户可以以原有格式预览文档;使用流媒体技术对视频进行预览,可以实现音视频未见的边转边播。
关键字:网络资源共享;分布式;平行对等服务器;全文检索;文档预览;流媒体。
目前,网络上存在大量的资源共享服务器。这些服务器一般存储了一定量的资源,并以web服务的方式供用户和其它服务器访问。现存的问题在于不同服务器的资源组织方式往往不同,有的是通过数据库,有的是通过一些描述文件(如XML),而且数据库的种类和结构也有很大的差别,这就导致不同服务器之间资源共享和资源发现都十分困难。因此,用户如果想访问这些资源,就要登陆每一个服务器去检索和下载需要的资源。由于服务器的分布广泛,数量众多,用户显然难以检索到自己需要的资源。而分布式的资源检索策略则可以有效的解决这一问题。该策略的思想是当用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。这样,用户只需要登陆任意一台服务器,就可以检索到大量所需资源,尽管这些资源来自于不同的服务器,但检索的过程对用户来说是透明的,用户检索和获取这些资源就如同检索和获取所请求的服务器上的资源一样。
闪应网络资源检索系统主要分为如下模块:
1.服务器注册、注销、发布模块
2.RMI模块
3.XML预处理模块
4.解析模块
5.查询模块
6.文档转换和预览模块
7.FMS流媒体视频转换和播放模块
8.文件上传下载模块
系统实现了快速精准的全文检索,良好的用户体验,主要有如下特色:
1. 创新的采用了服务器对等平行的模式,服务器可以向在网的任何一台服务器申请加入或退出,从根本上解决了因主服务器发生故障引起的系统瘫痪问题。
2.采用Java内置的RMI实现服务器之间的方法调用,保证了安全性。
3.采用了组播技术实现服务器之间的通信,提高了服务器对请求的相应速度。
4.对各种类型的文档进行转换,用户可以以原有格式预览文档。
5.使用流媒体技术对视频进行预览,可以实现音视频文件的边转边播。
系统结构图如下:
(1)传统的注册发布机制存在如下弊端:
分布式结构严重依赖于主服务器,一旦主服务器发生故障,便无法进行服务器的加入退出,整个分布式结构将无法工作。
(2)本系统采用的创新型“平行对等服务器结构”能顺利解决以上所有问题,执行流程如下:
•首先启动第一台服务器,通过比对XML文件中的host和remote信息是否相同,判断是否为自己的第一台默认服务器。如果是,则启动组播监听端口,RMI监听端口,等待其他服务器加入。若不是,向其他服务器申请加入。
•当其他服务器向在网任意一台服务器申请加入时,会调该服务的RMI注册方法,这时,该服务器就会组播新加入的服务器信息,通知其他服务器。
•服务器注销:当某台服务器注销时,会调用在网任意一台服务器,被调用的服务器通过组播告知其余主机该主机注销。即实现了服务器动态加入和退出。
•当检索资源的时候,如果发现有服务器无法连接上(时间限制为20秒),则会通过组播通知其余服务器删除无法连接的服务器的IP信息。
由RMI提供注册注销所需要的功能以及分布式查询所需要的服务,由组播模块实现全网服务器IP同步。
JAVA对socket封装成了RMI,利用RMI模块可以实现高效的服务器间方法调用。
利用开源的xml解析工具dom4j读取xml文件中的数据,利用poi工具读取word, ppt, execl, pdf中的文本并将这些数据传送给IK分词器分词后由Lucene创建索引。
用户输入的查询关键字,经过过滤模块的过滤,才真正进入查询模块。
对用户输入查询的关键字做拼音向汉字的转换,和分词后调用查询模块。
拼音转汉字:在服务器启动时会根据当前服务器中的资源信息,生成拼音转汉字词库。如果用户的输入为纯字母,则与拼音转汉字词库进行比对,若存在匹配项,则提供拼音转汉字结果;若与所有结果都不匹配则进行下一步,中文分词。
中文分词:提取出用户输入查询词中有意义关键字,识别用户数据中的布尔表达式,过滤掉无意义的停词和符号,进行检索。
通过组播将查询请求发送到各服务器,通过重写的Lucene MultiSearh方法调用其他服务器本机的检索方法进行检索,并将检索传回发出检索请求的服务器。
本系统利用重写的Lucene MultiSearch方法将各服务器发送回来的零散信息进行汇总,并调用打分器对结果进行排序整合;利用POI读取文档摘要信息供用户预览;利用Lucene高亮显示器,实现结果的高亮显示;对搜索到结果的类型信息进行筛选,实现按类型搜索。
接受到用户的文档预览请求后,系统首先会查询本地的数据库,判断是否已经将相应文档进行了转换。若已经转换过,则返回SWF文件地址给页面上的Flex Paper插件,显示文档。若未转换过,则调用OpenOffice相关结构,开始执行文档向PDF的转换;如果PDF文档转换成功,则会调用SWTTools执行PDF向SWF的转换,最后显示文档并将转换后文档相关信息写入到数据库中,用来为下次查询服务,避免了同一文档的重复转换。
传统的视频预览,需要根据不同格式的视频文件来调用嵌入在网页中的播放插件,这就要求客户端安装不同种类的播放器和相关解码器,并且需要将视频下载到本地后才能播放,这给网络带宽带来了极大的压力。
在一定的网络带宽下,我们采用流媒体播放则很好的解决了网络带宽的不足,缓解了网络的压力,能带来较大的并发数。并且可以实现不同用户连续的并发播放,可以实现任意时间定位,且不需要将整个视频文件下载到本地。
流媒体文件的另外一个好处就是,可以保护出版商的版权,无法轻松的将视频转录下来。
此系统,采用了网络上流行的FLV流媒体文件格式,使用ffmpeg进行格式转换,采用FMS做服务器,使用自己编写的播放器进行播放。
使用Struts作为MVC的实现框架。系统具有良好的可扩展性。
系统实现了对局域网内服务器的共享资源进行精准而快速的检索,良好的完成了题目要求的功能并作出了一些扩展。系统具有良好的可靠性,较好的用户体验和可扩展性。
【参考文献】
(1)邱哲、符滔滔、王学松 《开发自己的搜索引擎》 人民邮电出版社
(2)Otis Gospodnetic;Erik Hatcher 《Lucene In Action》
(3)耿详义,张跃平 《JSP实用教程》 清华大学出版社
(4)(美)Bruce Eckel 陈昊鹏 译《Java编程思想》 机械工业出版社
(5)吴亚峰、王鑫磊 《精通NetBeans》 人民邮电出版社
(6)Struts Tutorial
联络方式:
(1) 通讯地址:山东省烟台市莱山区烟台大学
(2) 电话:15063856828
(3) E-mail:zypsd@yahoo.cn
FMS流媒体视频转换和播放模块
评语:
该队能正确理解参赛题目的核心思想和应用背景,使用了较新的技术实现了题目要求的基本功能。该队在基础功能上下了较大功夫,比较出色的实现了视频、ppt等预览模块。但是作品的安装以及配置太过繁琐,需要进一步改进。