基于本体和Lucene的网络教育资源检索系统设计与实现毕业设计论文.docx
《基于本体和Lucene的网络教育资源检索系统设计与实现毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于本体和Lucene的网络教育资源检索系统设计与实现毕业设计论文.docx(64页珍藏版)》请在冰豆网上搜索。
基于本体和Lucene的网络教育资源检索系统设计与实现毕业设计论文
学科分类号:
520.6070
湖南人文科技学院
本科生毕业设计
论文题目:
基于本体和Lucene的网络教育资源检索系统设计与实现
DesignandImplementationofNetworkEducationResourcesRetrievalSystemBasedonOntologyandLucene
学生姓名:
学号
系部:
计算机科学技术系
专业年级:
2007级计算机科学与技术
指导教师:
职称:
湖南人文科技学院教务处2009年制
湖南人文科技学院本科毕业设计诚信声明
本人郑重声明:
所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。
对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
作者签名:
2011年月日
版权声明
版权所有2010-2011周显光,保留所有权利。
本文档受著作权法和国际公约的保护,XX擅自复制或传播本文档的部分或全部,可能受到严厉的民事和刑事制裁,并在法律许可的范围内受到最大可能的起诉。
基于本体和Lucene的网络教育资源检索系统设计与实现
摘要:
随着Internet/Intranet的迅速发展和广泛普及,越来越多的web2.0网站的出现,Internet上的信息量呈指数级增长,人们需要从浩如烟海的网络中快速、准确地找到自己需要的信息,这是信息时代的必然要求,所以对网站内容的索引和搜索将会变得越来越重要。
本设计在对网络教育资源检索系统的需求分析的基础上,以Eclipse3.6为集成开发环境,MySQL为后台数据库,使用JSF、JPA框架和Lucene、OWLAPI设计实现了基于本体和Lucene的网络教育资源检索系统。
该系统主要实现了用户登录与注册、网络教育资源的管理与搜索。
系统测试表明,该系统运行稳定,可访问性、可靠性很好,操作简单方便。
关键词:
教育资源检索;本体;JSF;JPA;Lucene;OWL
DesignandImplementationofNetworkEducationResourcesRetrievalSystemBasedonOntologyandLucene
Abstract:
WiththerapiddevelopmentandwidespreadingofInternet/Intranet,theappearanceofmoreandmoreweb2.0website,theexponentiallyincreasingoftheinformationamountinInternet,Peopleneedtofindtheinformationtheyneed,Thisistheinevitablerequestofinformationage,sotheindexandsearchofwebsitecontentwillbemoreandmoreimportant.
InthedesignbasedontheneedanalysisofthenetworkeducationresourcesretrievalsystembasedonontologyandLucene,usingEclipse3.6asdevelopmentenvironment,MySQLasbackgrounddatabase,usingJSF,JPAframeworkdesignandimplementthenetworkeducationresourcesretrievalsystembasedonontologyandLucene.Thesystemmainlyimplementstheuserloginandregister,themanagementandsearchofnetworkeducationresources.Systemtestingshowedthatthesystemrunstability,hasgoodaccessibilityandreliability,simpleoperation.
Keywords:
EducationResourceSearch;Ontology;JSF;JPA;Lucene;OWL
第一章绪论
1.1引言
由于Internet的迅猛发展,信息迅速膨胀,人们对信息查询的准确率的要求也越来越高,而全文检索系统因为检索功能强大、效率高而越来越流行。
Lucene是一个基于Java的开放源代码的全文检索引擎工具包,能够方便地嵌入到各种应用中实现索引和搜索功能。
本系统用此技术来实现对网络教育资源的全文检索,通过对索引的查询可以快速、可靠的得到相关信息,并在查询过程中应用中文分词技术,以使得查询结果更加准确和全面。
传统的数据库检索方式大都采用传统的关键词匹配算法进行查询,并不能很准确地返回相关信息,无法理解语义。
而用来对特定领域的概念及术语给予明确的形式化描述的本体论不仅为规范化资源描述及用户查询提供了基础,也为更准确地搜索信息提供了保证。
本人在此项目中使用Protégé建立了知识本体,并使用OWLAPI解析本体,实现了一个能使用本体中已有的概念进行的单词补全,并查找特定概念的子概念,实现了推理补全,这两者组成了搜索框的自动完成功能,能在用户搜索时提供相关的关键字智能提示,还可以对搜索词进行语义扩展后搜索。
1.2研究背景
Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
在计算机科学与信息科学领域,理论上,本体是指一种“形式化的,对于共享概念体系的明确而又详细的说明”。
本体提供的是一种共享词表,也就是特定领域之中那些存在着的对象类型或概念及其属性和相互关系;或者说,本体就是一种特殊类型的术语集,具有结构化的特点,且更加适合于在计算机系统之中使用;或者说,本体实际上就是对特定领域之中某套概念及其相互之间关系的形式化表达(formalrepresentation)。
本体是人们以自己兴趣领域的知识为素材,运用信息科学的本体论原理而编写出来的作品(artifacts)。
本体一般可以用来针对该领域的属性进行推理,亦可用于定义该领域(也就是对该领域进行建模)。
1.3本文主要工作
本系统从建立之初就注重良好的设计、效率和可移植性,系统先使用MySQLWorkbench建立数据库模型,然后将EER模型生成建表的SQL脚本并放在MySQL中运行,以此来创建数据表。
本项目使用的集成开发环境是Eclipse3.6,持久层使用JPA2.0(EclipseLink的实现)框架完成对象-关系映射,Web层使用JSF2.0(使用sun的实现和Primefaces的扩展)框架,Web和Servlet容器是ApacheTomcat7.0。
系统整体架构为B/S模式,遵循MVC模式开发,代码符合JavaEE6标准,使用JPA完成ORM映射,使用JSF的Facelets模板技术,将用户界面设计与业务逻辑分离,利用POJO做实现,在Facelets模板中使用JSF的标准标签、Primefaces扩展标签、JSTL标签和EL表达式实现可维护,可重用的视图,具体实现操作利用JSF的ManagedBean的方法作为Action或AcitionListener,在faces-config.xml中定义页面导航规则作为控制器,通过对JPA实体类及其Facade类的操作实现对数据库的操作,使用实体类和POJO作为模型,使用ManagedBean和POJO实现业务逻辑。
对基于本体和Lucene的网络教育资源检索系统的功能进行分析,主要是分析对网络教育资源的管理、索引和搜索,以及解析本体中的特定类的子类的功能实现。
其次进行概要设计,将系统分为4个模块:
数据库模块(实体模块,facade模块),Lucene模块(索引模块,搜索模块),本体模块,Web模块(模型模块、Servlet模块、ManagedBean模块)。
再次进行数据库设计,基于本体和Lucene的网络教育资源检索系统拥有多个数据表,为了实现相应的功能模块,需要对数据库进行相应的设计。
然后进行详细设计,最后系统测试。
开发一个基于本体和Lucene的网络教育资源检索系统必须经过以下阶段:
●可行性研究阶段
●需求分析阶段
●总体设计阶段
●详细设计阶段
●系统实现阶段
●测试阶段
1.4本文的组织安排
文章绪论部分对本系统的背景和现状进行了简要的介绍,分析了本文的主要工作任务;系统分析部分,包括开发环境和技术分析、可行性分析、需求分析、系统功能分析等,为设计和理解应用程序做了很好的铺垫;系统设计部分主要介绍了系统功能设计和数据库设计,并根据系统要对功能进行了划分和细化;系统实现部分说明了几个主要模块的算法及代码设计。
围绕基于本体和Lucene的网络教育资源检索系统的项目实施,根据开发过程,重点阐述了软件项目开发的流程,从业务流程、功能描述等方面对系统进行了详尽的分析,从数据库逻辑模型、软件结构、模块加工说明、界面设计四方面对系统进行了详尽的设计。
最后对论文进行了总结,并对指导者进行致谢。
第二章开发环境和开发技术
2.1系统介绍
本设计所实现的基于本体和Lucene的网络教育资源检索系统主要用于研究在Lucene全文检索系统中,如何利用本体中的概念和术语及其之间的关系进行推理,提高搜索的质量。
本系统分为数据库模块(实体模块,facade模块),Lucene模块(索引模块,搜索模块),本体模块,Web模块(模型模块、Servlet模块、ManagedBean模块)四个模块,实现用户的登录与注册、文档的管理和分类、文档的搜索,文档的索引、搜索关键字的智能提示等功能。
2.2系统开发环境
开发与运行的环境的选择会影响到数据库设计,本系统开发与运行环境如下:
●操作系统:
UbuntuLinux10.04
●开发工具:
Eclipse3.6
●数据库管理系统:
MySQL5.1
●服务器:
ApacheTomcat7.0
●用MySQLWorkbench建立数据模型,然后用模型生成建表的SQL代码,运行SQL代码创建数据库模式和数据表
2.3系统开发技术
本系统采用Eclipse3.6为开发工具,Java为编程语言,MySQL为数据库后台处理,使整个系统具有良好的可移植性,并且可以更换数据库(支持所有主流的数据库,如MySQL、PostgreSQL、Oracle、DB2、Sybase、MicrosoftSQLServer等)和Servlet容器(ApacheTomcat、Glassfish、JBoss、Weblogic、Websphere等)。
2.3.1Eclipse简介
Eclipse是一个著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
2.3.2Java简介
Java,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface、简称API)构成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
2.3.3JSF简介
JavaServerFaces(JSF)是一种标准的J2EE表示层的技术,其主旨是为了使Java开发人员能够快速的开发基于Java的Web应用程序。
它不同于其它Java表示层技术的最大优势是其采用的组件模型,事件驱动,依赖注入。
JavaServerFaces(JSF)是一种用于构建Web应用程序的新标准Java框架。
它提供了一种以组件为中心来开发JavaWeb用户界面的方法,从而简化了开发。
JavaServerFaces的MVC实现JSF的主要优势之一就是它既是JavaWeb用户界面标准又是严格遵循模型-视图-控制器(MVC)设计模式的框架。
用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理。
为了准备提供页面对应用程序数据访问的JSF上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“FacesServlet”(控制器)来处理。
2.3.4JPA简介
JPA全称JavaPersistenceAPI,JPA通过注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA是J2EE中的持久化标准规范,有很多种实现(HibernateJPA、EclipseLink和TopLink等)。
2.3.5MySQL简介
MySQL是一个跨平台的开源数据库。
“LAMP”中的“M”指的就是MySQL,它以其简单易用的特点广泛被广大用户采用,MySQL是C/S架构的服务器,服务器端是多线程的,支持不同的后端、多个不同的客户程式和库、管理工具和广泛的应用程式接口(apis),为客户端提供了不同的程序接口和链接库,如C、C++、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin等。
mysql是个快速的、多线程、多用户和健壮的sql数据库服务器。
mysql服务器支持关键任务、重负载生产系统的使用,也能够将他嵌入到一个大配置(mass-deployed)的软件中去。
可以使用命令行工具管理MySQL数据库,也可以从MySQL的网站下载图形管理工具MySQLAdministrator、MySQLQueryBrowser和MySQLWorkbench。
第三章可行性与需求分析
3.1可行性分析
3.1.1技术可行性
JSF实现表现层,使用ManagedBean和其他POJO来处理业务逻辑,JPA完成ORM映射,再结合Lucene建立和搜索索引,使用OWLAPI分析本体,获得相关的概念或术语,提供搜索关键词提示,并提供语义扩展搜索,因此在技术上是可行的。
3.1.2社会可行性
网络教育资源的内容一般很丰富,难以准确地检索,传统的检索方式无法胜任,只有使用全文检索引擎和本体,才能提供比较准确的检索结果,因此本系统在社会上是可行的。
3.1.3经济可行性
该系统是个低成本的系统,由一个人单独开发,不会花费太多的人力和财力,一台性能良好的计算机和一系列开源免费的软件就可以完成设计,在经济上是可行的。
3.2系统目标
许多含有大量内容的网站都需要提供比较准确的搜索功能方便用户获得自己想要的信息,网络教育资源网站也不例外。
这也是网络教育资源应用程序开发常用的功能模块。
学生作业管理系统是以JSF、JPA和POJO为实现基础,以检索网络教育资源为目的,给出了系统架构为B/S结构的网络教育资源检索系统,实现了一个全文检索系统和针对领域本体的语义搜索。
3.3功能需求
对于登录用户,可以创建教学文档、删除教学文档、编辑教学文档、查看教学文档、搜索教学文档、对教学文档进行分类、创建分类、重命名分类、移动分类、嵌套分类、删除分类。
对于没有登录的用户,也可以搜索教学文档、查看教学文档。
UML用例图如图3-1所示。
图3-1系统UML用例图
系统主要分为3个方面的功能:
(1)用户功能:
包括用户注册、登录。
(2)管理教学文档:
包括创建文档、编辑文档、删除文档、移动文档到其他分类、创建分类、移动分类、删除分类、重命名分类和分类嵌套等,供已登录用户访问。
(3)检索教学文档:
包括搜索关键字提示、搜索文档、搜索词的语义扩展,供所有用户访问。
3.4性能需求
系统具有良好的灵活性,可扩展性和可移植性,系统采用浏览器/服务器模型。
在数据库方面,项目使用JPA完成ORM映射,使用JPQL和实体类操作数据库,避免了对某一种数据库的依赖,可以很方便的移植到其他的数据库上去。
在表现层,使用JSF的Facelets模板技术用来创建可维护,可重用的Web页。
在业务层,使用ManagedBean处理要显示在页面的数据和业务逻辑,还使用ApplicationContextListener这个上下文监听器完成WEB应用程序的初始化和关闭时的资源清理工作。
系统初始化时载入并解析本体数据,提高了关键字提示的速度。
系统把建立索引和删除索引的工作交给线程池,在后台完成,不影响用户体验。
系统的文档管理使用了Ajax技术根据用户需要动态载入数据(分类的树形结构和文档的分页),减小了系统的开销,提高了用户体验。
系统的升级只涉及到服务端,只要服务端做出相应的修改升级,客户端自然会实现新的系统更新。
第四章系统概要设计
4.1模块设计
4.1.1系统功能层次图
该系统主要由以下功能模块组成,如图4-1所示:
图4-1系统功能层次图
4.1.2系统UML包图
图4-2系统UML包图
4.1.3数据库模块
数据库模块为com.edu.data,包含两个子模块:
实体模块(com.edu.data.entity)和实体操作模块(com.edu.data.facade)。
图4-3实体模块UML类图
实体模块负责完成对象-关系映射,实现Java对象到数据库的持久化,User类表示用户,Category类表示分类,Doc类表示文档。
图4-4实体操作模块UML类图
实体操作模块封装了对实体的操作:
插入、删除、更新、查询等,AbstractFacade封装了操作实体的通用操作:
find、edit、create、refresh、remove和count,其他的Façade类继承AbstractFacade,增加了具体对于某一类实体的操作,DocFacade封装了对Doc实体的操作,UserFacade封装了对User实体的操作,CategoryFacade封装了对Category实体的操作。
4.1.4Web模块
数据库模块所在的包为com.edu.web,包括Servlet模块(com.edu.web.servlet),ManagedBean模块(com.edu.web.managedBean)和数据模型模块(com.edu.web.model)。
图4-5Servlet模块UML类图
Servlet模块包含一个通用的应用程序上下文监听器,实现了使用JPA框架的web应用程序的初始化工作(创建实体管理器工厂等)和关闭工作(关闭实体管理器工厂和unregister数据库驱动),提供了在系统初始化和关闭时插入代码的的抽象方法,提供了对象映射、添加对象到对象映射和从对象映射中获取对象的方法,还包含一个子类提供持久化单元的名称,定制系统初始化和关闭时的工作。
图4-6数据模型模块UML类图
数据模型模块提供了托管Bean需要使用的一些数据模型,用于表示分类树和文档表,CategoryTreeNode表示分类树节点,DocumentTable提供CategoryTreeNode对DocumentLazyDataModel访问,DocumentLazyDataModel是一个用于Ajax分页表格的模型,能根据用户请求动态载入数据。
图4-7ManagedBean模块UML类图
ManagedBean模块包含JSF页面需要使用的托管Bean,通过配置faces-config.xml进行依赖注入,ManagedBeanConstructorUtil也提供一系列静态方法获得其他托管Bean(SessionBean和ApplicationBean)的引用和request、session和response等,UserBean管理用户登录,提供login、logout和判断登录状态的方法,CategoryTreeBean是分类树的模型,为显示分类树提供数据,并对树节点的选择和展开事件进行响应,动态地改变树的结构,分类路径和文档表的内容。
图4-8用户表单模块UML类图
用户表单模块用来处理用户的登录和注册的表单,LoginForm处理用户登录的表单,RegisterForm处理用户注册的表单。
图4-9文档表单模块UML类图
文档表单模块处理文档的创建、编辑、删除、搜索表单,实现文档的查看功能,DocEditForm处理文档编辑表单,DocDelForm处理文档删除表单,DocViewForm用于从数据库取出文档用于显示,DocNewForm处理文档创建表单,SearchForm处理文档搜索表单。
图4-10分类表单模块UML类图
分类表单模块处理分类的创建、删除和编辑的表单,CatNewForm处理分类创建表单,CatEditForm处理分类编辑表单,CatDelForm处理分类删除表单。
4.1.3Lucene模块
Lucene模块为(com.edu.lucene),包含两个子模块:
索引模块(com.edu.lucene.index)和搜索模块(com.edu.lucene.search)。
图4-11Lucene模块UML类图
Lucene模块完成Lucene目录和分析器的创建和关闭,实现对索引的创建、编辑、删除和搜索,DocSearcher实现对索引的搜索,DocIndexer实现对文档的索引的操作,把操作放在线程池中执行,WriteDocIndexTasks实现了更新索引的任务,DeleteDocIndexTask实现了删除索引的任务。
4.1.4本体模块
本体模块位于com.edu.ontology。
图4-12本体模块UML类图
本体模块实现了本体的载入和解析,对搜索语句中的词汇进行单词补全和语义补全的功能,libraryPath表示本体文件的磁盘路径,libraryFile表示本体文件,educationOntology表示本体,getRelativeWords方法用于根据搜索语句从本体中获得相关词列表,包括单词补全和语义补全。
4.2系统数据库设计
4.2.1EER图
系统EER图如图4-5所示:
图4-5系统EER图
用户表用来存储用户信息;一个用户可以创建多个文档和分类;一个分类可以包含多个分类和多个文档。
4.2.2数据表设计
系统主要数据库表如下:
表4-1用户表(user)
标识
数据类型
数