基于SES通用爬行器的设计与实现

2011-06-08 03:35文必龙
关键词:管理器数据源插件

文必龙,叶 静

(东北石油大学计算机与信息技术学院,黑龙江 大庆 163318)

信息社会的快速发展使得信息的容量达到了空前的高度.在大部分行业中,企业内容每年增加一倍以上.重要而敏感的内容遍及各处,它们存在于企业的数据库中,电子邮件的附件中,专用内容管理服务器中、分布式文件系统或私人工作区中,以及内部网和面向公众的网站中.用户需要有效的企业搜索,将分布各处的信息转化为运营优势,企业搜索引擎[1]成为研究热点.企业搜索引擎与因特网搜索引擎比较具有其特殊的特性[2]:企业搜索引擎需要面向企业网,对企业内部的信息资源进行搜索;因特网搜索引擎的搜索对象是网页和多媒体文件,而企业搜索引擎可以对企业数据库进行搜索;因特网搜索的内容和展现的信息都是完全开放,不存在安全性问题,但企业的数据涉及企业的核心利益,要求具有很高的保密性;因特网搜索和展现的内容都是网页和文件的原始形态,但企业数据库中的数据有的是以编码形式保存,需要进行专门的语义处理和代码转换,变成用户能读懂的文字、图形和报表等方式.

数据采集[3]是搜索引擎工作的第一步,只有相关的信息被爬行器抓取到才能进行下一步的数据分析工作.由于企业搜索引擎素要处理的信息[4]包括了大量的异构数据库和异构文档,需要对不同类型的信息书写不同的处理函数以提取文本.本文根据企业搜索引擎的相关特性,开发出基于SES的通用爬行器.该爬行器可以对 Lotus/Domino的相关内容、基于Microsoft SharePoint Server(SPS)门户网站、基于Content Management System(CMS)内容管理系统、企业数据库(Oracle和Sql Server)和FTP上的相关内容进行爬行.从爬行效果上都必须满足对数据源的完全爬行,对于Domino、FTP的相关内容还应提供增量爬行机制,即采集新增的或有更新情况的文档,保证了搜索的时效性.

1 SES简介

Secure Enterprise Search(SES)安全企业搜索,是由Oracle公司针对企业用户的企业搜索需求推出的一款安全企业搜索产品,并提供了用于二次开发的相应的接口.Oracle搜索解决方案基于Oracle数据库构建(定期对可靠性和安全性进行检查),为搜索提供了高度安全的基础.Oracle与主要的认证机制和库进行了集成,用户不仅可以安全有效地查找信息、缓解信息过载,还可以发掘深层内联网中难以触及的隐藏信息.

SES提供的搜索器是一个多线程Java应用程序,负责从用户在配置期间指定的数据源中收集文档.要搜索其他信息库,SES搜索器允许用户定义特定“数据源”.搜索器也可以通过“插件”扩展(插件是Oracle提供的或客户开发的Java类,与搜索应用程序运行在同一个OC4J容器中).在定义插件后,它们将作为新数据源列出.在进行配置后,插件可以将数据提供给搜索器,并且可以像其他数据源一样进行索引.从技术上讲,插件负责收集指向要索引文档的URL,它们将这些URL传递给搜索器进行索引.用户可以根据自己的实际需求,利用SES提供的相应接口,按照一定的规范实现自己的插件.

2 系统设计

2.1 总体设计

本系统采用分层设计,结构清晰,可扩展性强.系统的总体结构如图1所示.

图1 系统总体结构

数据采集是企业搜索引擎工作的第一步,通过SES提供的相应接口开发出通用爬行器插件,根据需要爬取数据源类型的不同,选择相应的爬行器类型并填写好爬行参数,对爬取的数据进行索引,并存储到索引库当中.用户在Web界面中输入相应的关键词并对其进行简单的切词操作后提交到企业搜索引擎当中,将命中的结果的前200条分页显示在界面当中.

2.2 爬行器设计

SES提供了相应的接口供用户开发符合自己需求的爬行器插件,本系统利用了这些接口开发了通用爬行器插件,该爬行器可以对Lotus/Domino的相关内容、基于Microsoft SharePoint Server(SPS)门户网站、企业数据库(Oracle和 Sql Server)和FTP上的相关内容进行爬行.从爬行效果上满足了对数据源的完全爬行和对部分数据源的增量爬行.

图2为爬行器的系统架构,其中①②③④⑤为爬行器的工作顺序,具体工作流程如下.

图2 爬行器的系统架构

1)通过源类型注册,系统知道该到哪个jar文件中查找实现CrawlerPluginManager的类名,该类是爬行器程序的入口.

2)创建源时选择源类型,系统通过调用管理器类的三个成员函数:getPluginParameters、getPluginDescription和 getPluginName,获取插件名称、描述和参数表,其中getPluginParameters返回一组类型为List的参数列表,系统根据列表中的参数名、参数描述和缺省值自动生成参数输入界面.

3)启动爬行后,调用初始化函数init(ParameterValues params,boolean forceRecrawl,Date last-CrawlTime,GeneralService generalMgr,int thread-Count),即向管理器类传递爬行模式、上次爬行时间、线程数等相应参数.此外,将提供一个辅助服务类(GeneralService generalMgr)传递给管理器类,管理器类通过辅助服务类可以获取系统的各种服务.CrawlerCtrl类为各种数据源的连接及获取相关内容的管理类,例如,getFileList(String path)可获得ftp服务器上path目录下包括子目录的所有文件列表,LotusAttachment(String dominoURL,String username,String password,String DBname,String Form)可获得domino服务器上某个表单下的所有附件.对实例化CrawlerCtrl类后得到的结果进行处理,得到文档链接,将其和文档的最后修改时间拼接后作为唯一的DisplayURL放入队列中,采用修改时间作为文档修改的主要标志,实现对domimo和ftp数据源的增量爬行.

4)调度系统在通过init完成管理器类的初始化后,然后调用管理器类getCrawlerPlugin函数,从管理器类中获得爬行器对象.在getCrawlerPlugin函数中,管理器类创建一个爬行器类的对象,并用系统在init中传过来的参数对其进行初始化.

5)调度系统用管理器类的getCrawlerPlugin方法获得爬行器对象后,调用爬行器对象的crawler方法,启动爬行.crawler方法根据系统传递过来的源定义参数,如数据服务器地址、用户名、口令、文件目录、爬行的域或属性、关键字等内容,完成以下工作.

①从队列中依次取出DisplayURL,建立与数据服务器的联接,查询出对应的文档.

②对每一个文档,获取其属性(如标题、最后修改时间、文档的显示URL、作者等),根据这些属性建立一个元数据对象(类DocumentMetadata的实例).

③对每一个文档,建立一个读取文件的流对象(InputStream类的实例).

④将元数据对象和流对象提交给爬行线程服务器CrawlingThreadService.

爬行线程服务器在接到提交的元数据对象和流对象后,就会调用流对象获取文档内容,根据内容格式调用相应的过滤器(如word、PDF、Excel等基本格式)进行格式分析、内容过滤、建立索引、派生线程等.

3 系统实现

本系统分后台搜索管理模块和前台搜索请求模块两部分.后台搜索管理模块从总体上分为:搜索前准备、搜索过程控制和搜索成果管理等.前台搜索请求模块主要负责对已爬行到的结果进行检索.

3.1 后台搜索管理模块设计

后台管理模块需要设置所要爬行的数据源的必要信息,包括数据源名称、服务器地址、用户名、密码、所要爬行内容对应的相关实体和属性.例如,Domino爬行器程序的界面如图3所示.通过日志模块可以查看整个爬行的运行状态,如图4所示.

图3 Domino爬行器主界面

图4 爬行运行状态

3.2 前台搜索请求模块设计

搜索请求界面是企业搜索引擎系统提供的首界面,页面简单明了,用户只需输入关键字,点击“搜索”按钮即可.

4 结语

主要实现基于SES的通用爬行器程序以及基于企业搜索引擎的搜索程序.该通用爬行器可以对企业数据库、门户网页、文档文件、办公系统内容等进行抓取和分析,提取有用文字信息,并对这些信息建立索引.该爬行器既提升了信息的可访问性,也保证了企业内部的敏感信息的安全性.用户通过后台搜索管理界面填写相应参数,让爬行器只爬取特定的数据源,前台搜索请求模块可以对已爬行到的数据源进行检索,通过对用户的身份进行确认,从而可以给用户提供安全搜索模式.

[1]文必龙,李 添.企业搜索引擎安全搜索的研究[J].齐齐哈尔大学学报,2010(5):1-3.

[2]李海丰.基于Lucene的企业搜索引擎研究及应用[J].电脑知识与技术,2009(4):926-929.

[3]郑 伟.数据采集系统的设计研究[J].电脑与信息技术,2010,18(6):33-35.

[4]姜 华.基于Lucene的面向商业应用的搜索引擎研究与实现[D].成都:电子科技大学,2007:48-76.

猜你喜欢
管理器数据源插件
应急状态启动磁盘管理器
自编插件完善App Inventor与乐高机器人通信
Windows文件缓冲处理技术概述
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
基于真值发现的冲突数据源质量评价算法
基于Revit MEP的插件制作探讨
高集成度2.5A备份电源管理器简化锂离子电池备份系统