《基于分布式的资源检索系统设计与实现(山东财政学院)》由会员分享,可在线阅读,更多相关《基于分布式的资源检索系统设计与实现(山东财政学院)(7页珍藏版)》请在金锄头文库上搜索。
1、基于分布式的资源检索系统设计与实现基于分布式的资源检索系统设计与实现刘杰君,梅炀,李超,廉翠翠,吴俊(山东财政学院,济南,250014)摘要:摘要:本系统是建立在 j2ee 三层架构之上的网络资源检索系统,以 XML 为数据库,在分布式 的条件下,检索出用户需要的信息。本系统对分布式结构做了优化,提出了一种新的分布式结 构:选举注册发布。同时融合大赛提出的结构以及进程选举,p2p,路由算法等方案的提出的一 种分布式结构;对 XML 进行了优化预处理,制作成倒排索引表;检索过程更加智能化,人性 化;采用流媒体技术,开发出一套独立的流媒体转换处理播放系统,使播放效果更加流畅;采用 中文分词,并支持
2、全文检索,使搜索结果更加符合用户的需要; 提供多种综合查询方式,方便 用户的查找;开发出一套 TaoJin 开发引擎;增加日志管理功能;对 office 以及 pdf 等主流文档 类型进行预览;采用 AJAX 异步传输技术,实时提醒用户;同时采用 Webservices 和 Socket 针 对不同平台提供查询、选举接口;针对每一个模块,每一个功能都提出多套解决方案,可以适 应不同的复杂的环境;针对用户的行为进行分析,使查询结果更加符合用户的需要;提供了众 多的方便用户的功能,开发出淘尽 IE 工具条等一系列实用工具。关键字:关键字:网上掏宝;分布式;搜索引擎;选举;资源检索;Webservi
3、ces;Socket;流媒体。、1 程序的主要模块(1 1)系统启动模块)系统启动模块(2 2)用户查询模块)用户查询模块系统启动模块注册注销模块选举模块Webservices 服务Socket 服务XML 预处理用户查询模块过滤模块解析模块查询模块敏感词汇模块拼音转汉字模块错误检查模块表达式解析模块序列化模块反序列化模块中文分词模块排序保存模块高级搜索模块表达式搜索模块在结果中搜索模块相关搜索模块全面检索模块精确检索模块全文检索模块分类搜索模块高亮显示模块(3 3)显示模块)显示模块显示模块文本预览视频播放AJAX 预览网页预览普通网页播放流式播放(4 4)管理模块)管理模块2 2 系统架构
4、系统架构与实用技术与实用技术截图预览管理模块登录模块用户管理模块资源管理模块定期事件模块词库模块资源权重模块资源缓存模块服务器初始化模块主服务器配置模块服务器配置模块服务器管理模块(1 1)采用)采用 MVCMVC 的三层架构(见下图)的三层架构(见下图)从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度上降低了开发的难度。三层架构可以更好的支持分布式计算环境。逻辑层的
5、应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级 CPU 有效。也是三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。表示层(UI)业务逻辑层(BLL)数据访问层(DAL)(2 2)使用技术)使用技术整个系统的实现是基于 j2ee_5 的。三层架构是采用 Struts 2.0 + jsp 2.0 + servlet + javabean 来实现的。系统的框架采用目前最流行的框架 Struts 2.0。采用异步传输技术AJAX,实现用户输入的实时提示。中文分词采用 lucene-2.3.2 和中文分词
6、器 IKAnalyzer V2.0.2。对 XML 的解析处理采用 dom4j-1.6.1。增加日志功能,记录系统运行情况以及遇到的问题 log4j。定期触发事件,可以重新索引,采用 quartz 技术。Webservices 技术采用 xfire-1.2.6,提供选举和查询的功能。为了提高查询效率,特别提供 socket 技术接口,大大提高了查询的效率。采用 poi 技术实现对 office 的预览功能。采用 jacob,作为对 poi 技术的补充,解决部分特殊格式的问题。流媒体服务器端采用 ffmpeg + mencoder + FMS,实现流媒体服务器端。流媒体客户端采用 actionS
7、cript 3.0 和流媒体服务器端的实时通信。3 各技术详细各技术详细说明说明(1 1)选举、注册、注销)选举、注册、注销技术技术 本系统对分布式结构做了优化,提出了一种新的分布式结构:选举注册发布。同时融合 大赛提出的结构以及进程选举,p2p,路由算法等方案的提出的一种分布式结构;先说说“正常”情况下的执行过程: 默认主服务器启动。然后其余服务器启动,到主服务器上面去注册,主服务器告诉该服 务器当前已经注册的主机信息,然后主服务器通知已经注册的主机又有一台新的主机加入了。 主机注销:主机注销时,通知主服务器本主机注销,然后主服务器通知其余主机该主机注销。 即实现了资源服务器动态的加入和退出
8、。当检索资源的时候,如果发现有资源服务器当掉了, 则将其注册信息删除。 下面是选举的执行过程: 当一台“注册”或者“注销”或“查询”的主机发现主服务器当机的时候,开始选举过程。发 现主服务器当机的服务器开始向“优先级”最高的服务器发出消息,如果不响应,则依次发到 比自己都高的服务器,如果都没有响应则表明自己是主服务器,然后向其它服务器发送自己 是主服务器的消息;如果有响应则响应者是主服务器,响应者发送消息说自己是主服务器。 综合服务器当机可能出现的各种情况,我们分别对各自的选举过程进行了处理:1.最简单的选举的触发情况是查询时发现主服务器当机,包括以下两种情形: 该主机不是当前的主服务器; 该
9、主机是当前的主服务器。2.一台主机启动时发现默认主服务器当机,包括以下几种情形: 有别的主机充当主服务器; 没有别的主机,只有自己在提供服务; 别的主机均未发现主服务器当机,没有别的主机充当主服务器。3.一台主机退出时发现主服务器当机,包括以下几种情形: 没有别的主机活动; 还有别的主机活动。4.默认主服务器重新开始提供服务。(2 2)XMLXML 预处理预处理、webserviceswebservices 和和 socketsocket 技术技术 对 XML 进行了优化预处理,制作成倒排索引表;“倒排表”是目前搜索引擎公司的搜索引擎采用的最常用的存储方式.也是搜索引擎的核心内容!在系统启动的
10、阶段将 test.xml 制作成倒排表的形式,这样可以极大的提高搜索时的效率。倒排索引是一种面向关键字的索引机制,利用它可以提高检索时的速度。通常情况下,倒排索引结构由“词典”和“出现情况”两部分组成。对于每一个关键字,都会有一个词汇列表记录关键字在所有文档中出现的位置,这些位置可以是关键字的位置(文本中的第几个单词)也可以是字符的位置(文本中的第几个字符) 。同时采用 Webservices 和 Socket 针对不同平台提供查询、选举接口。webservices服务提供选举的所需要的功能以及用户查询产生的分布式查询所需要的服务,由于webservices 的平台无关性,可以使用于任何平台来
11、连接,扩大了本系统的适用性。Socket 模块提供用户查询产生的分布式查询所需要的服务,对于使用 java 开发的平台,可用 socket 来连接,效率更高。总的来说,对于选举注册发布的分布式结构,更加可靠,实用平台更多的webservices;对于查询,如果别的系统用非 java 语言来开发的,则提供 webservices服务;如果用得是 java 语言来开发的,则提供效率更高的 socket 服务。(3 3)过滤)过滤与解析技术与解析技术对于用户输入的查询关键字,首先经过过滤模块的过滤,才能真正进入查询模块。过滤模块一共包括三层过滤:敏感词汇模块过滤,拼音转汉字模块过滤,错误检查模块过滤
12、。敏感词汇模块:由管理员在后台设置敏感词汇,如果用户输入的关键字里面包括这些敏感词汇,则用户的查询被禁止。拼音转汉字模块:将用户输入的拼音按照词典来找出对应的汉字。错误检查模块:将用户输入的错误关键字转化为正确的关键字。解析主要只解析表达式。表达式支持的符号为:+、 -、 and 、or 、not 、() 、”、title: 、 keywords : 、 kind : 、 describe:、 date : 、 author : 、 publisher:。 (4 4)AJAXAJAX 与文档预览与文档预览技术技术 采用 AJAX 异步传输技术,实时提醒用户。用户在输入框输入的时候,会在出现一个
13、下拉框,提示用户别人搜索过的和自己正在输入的关键字类似的关键字,以及它们能搜索到的条数。AJAX 预览模块模块就是实现的这功能。当用户正在输入关键字的时候,触发 onkeyup、onkeydown、onclick 事件,利用 AJAX 异步传输技术,将用户当前已经输入的关键字传回服务器,服务器在AjaxDB.xml 文件中查找与用户当前输入的关键字相似的关键字,然后服务器将查找到的关键字和相应的记录条数返回给客户端浏览器,客户端浏览器将其实时的显示在页面中。其中 AjaxDB.xml 是在上一个模块中将每次用户查询的关键字及相应信息保存到其中的文件。实现对 word 及 ppt 的预览,同时还
14、增加了对 pdf 格式的预览(大赛只要求实现对 word和 ppt 的预览) 。 (5 5)视频与)视频与 FMSFMS 流媒体播放流媒体播放技术技术通过用户点击连接触发相应,将相应的 URL 参数传到后台相应的 jsp 页面中,程序根据URL 参数调用不同的播放实现视频的播放。使用 jsp 技术和 javascript 从 URL 获取视频后缀的不同调用不同的播放器,来达到多种格式视频和音乐的播放。通过解析所传 URL 中的参数值来选择合适的播放器进行嵌入网页的播放,代码优化播放器的外观,使其更加美观大方。URL 路径中带有中文的问题已解决,即资源路径中包含中文名称亦可正确解析。我们编写了一
15、套独立的流媒体转换处理播放系统,支持多线程、批处理,可独立运行,然后 java 程序通过一定的方式提交转换任务,转换系统接收到新的转换后,开始转换视频。当有多个用户同时点击或者间隔很少时间内点击位于同一台电脑上的不同视频文件链接,而且以上链接所对应的视频都是第一次被观看时,采用多线程转换技术,把所有的转换任务依次执行,互不影响,提高了视频转换的效率。第一次转换视频完毕后,以后的用户再次点击此视频播放链接的时候,则可以直接进行流媒体播放。 (6 6)动态视频截图)动态视频截图技术技术通过用户点击连接触发相应,将相应的 URL 参数传到后台相应的视频截图程序中,程序调用相应插件,通过后台设置的参数
16、对相应视频进行截图,然后嵌入到网页呈现到客户端。通过代码检测截图是否已成功,从而减少了对 CPU 资源的浪费,提高了利用率。通过代码设置参数,可截出影片任意一帧的图片,而且还可以截取一段视频片段,将视频服务做到了淋漓尽致。淘尽网络资源检索平台所提供的服务还不止于此,我们在对视频做 flash 化的同时,通过后台参数设置,实现了可控制的视频截图预览,即可控制截图的数量,质量和时间点。 4 4 结束结束 该论文在大赛要求的基础上,进行了大量的扩充,并进行了深入的研究。过程论述清晰,是一份很好的技术论文,对以后的项目开发有很好的借鉴作用。论文的结构合理,思路清晰, 收集整理资料完整。语句措辞方面还有欠缺,有待改进。联络方式:联络方式:(1)通讯地址:济南市市中区舜耕路 40 号山东财政学院(2)电话:13698610194(3)E-mail: