基于本体和Lucene的网络教育资源检索系统设计与实现_第1页
基于本体和Lucene的网络教育资源检索系统设计与实现_第2页
基于本体和Lucene的网络教育资源检索系统设计与实现_第3页
基于本体和Lucene的网络教育资源检索系统设计与实现_第4页
基于本体和Lucene的网络教育资源检索系统设计与实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学科分类号: 520.6070 湖南人文科技学院湖南人文科技学院本科生毕业设计论文题目:基于本体和基于本体和 lucene 的网络教的网络教育资源检索系统设计与实现育资源检索系统设计与实现design and implementation of network education resources retrieval system based on ontology and lucene学生姓名:周显光周显光学号07408119系 部:计算机科学技术系计算机科学技术系专业年级:2007 级计算机科学与技术级计算机科学与技术指导教师:郭郭 广广 军军职 称:教教 授授湖南人文科技学院教务处 2

2、009 年制湖南人文科技学院本科毕业设计诚信声明本人郑重声明:所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 作者签名: 2011年 月 日版权声明版权所有 2010-2011 周显光,保留所有权利。本文档受著作权法和国际公约的保护,未经授权擅自复制或传播本文档的部分或全部,可能受到严厉的民事和刑事制裁,并在法律许可的范围内受到最大可能的起诉。湖南人文科

3、技学院毕业设计目 录摘要 .iabstract.i第一章 绪 论.11.1 引言.11.2 研究背景.11.3 本文主要工作.21.4 本文的组织安排.2第二章 开发环境和开发技术.42.1 系统介绍.42.2 系统开发环境.42.3 系统开发技术.42.3.1 eclipse 简介.42.3.2 java 简介.52.3.3 jsf 简介.52.3.4 jpa 简介.52.3.5 mysql 简介.5第三章 可行性与需求分析.63.1 可行性分析.63.1.1 技术可行性.63.1.2 社会可行性.63.1.3 经济可行性.63.2 系统目标.63.3 功能需求.63.4 性能需求.7第四章

4、 系统概要设计.94.1 模块设计.94.1.1 系统功能层次图.94.1.2 系统 uml 包图.104.1.3 数据库模块.104.1.4 web 模块.124.1.3 lucene 模块.184.1.4 本体模块.204.2 系统数据库设计.214.2.1 eer 图.214.2.2 数据表设计.214.2.3 创建数据表.23湖南人文科技学院毕业设计第五章 系统实现.265.1 本体模块.265.2 lucene模块.315.2.1 索引更新模块.325.2.2 索引搜索模块.365.3 数据模块.385.3.1 实体模块.385.3.1 实体操作模块.385.4 web模块.385.

5、4.1 servlet 模块 .385.4.2 managedbean 模块.385.4.3 有关网页的 facelets 实现.41第六章 系统测试.436.1 系统搜索模块的测试.436.2 资源模块的测试.446.3 用户模块的测试.45结束语.47致 谢.48参考文献.48湖南人文科技学院毕业设计i基于本体和基于本体和 lucene 的网络教育资源检索系统设计与实现的网络教育资源检索系统设计与实现摘要摘要:随着 internet/intranet 的迅速发展和广泛普及,越来越多的 web2.0 网站的出现,internet 上的信息量呈指数级增长,人们需要从浩如烟海的网络中快速、准确地

6、找到自己需要的信息,这是信息时代的必然要求,所以对网站内容的索引和搜索将会变得越来越重要。本设计在对网络教育资源检索系统的需求分析的基础上,以 eclipse 3.6 为集成开发环境,mysql 为后台数据库,使用 jsf、jpa 框架和 lucene、owl api 设计实现了基于本体和 lucene 的网络教育资源检索系统。该系统主要实现了用户登录与注册、网络教育资源的管理与搜索。系统测试表明,该系统运行稳定,可访问性、可靠性很好,操作简单方便。 关键词:教育资源检索;本体;jsf;jpa;lucene;owldesign and implementation of network edu

7、cation resources retrieval system based on ontology and luceneabstract: with the rapid development and wide spreading of internet/intranet, the appearance of more and more web2.0 web site, the exponentially increasing of the information amount in internet, people need to find the information they ne

8、ed, this is the inevitable request of information age, so the index and search of web site content will be more and more important.in the design based on the need analysis of the network education resources retrieval system based on ontology and lucene, using eclipse 3.6 as development environment,

9、mysql as background database, using jsf, jpa framework design and implement the network education resources retrieval system based on ontology and lucene. the system mainly implements the user login and register, the management and search of network education resources. system testing showed that th

10、e system run stability, has good accessibility and reliability, simple operation.key words: education resource search; ontology; jsf; jpa; lucene; owl 湖南人文科技学院毕业设计1第一章第一章 绪绪 论论1.1 引言由于 internet 的迅猛发展,信息迅速膨胀,人们对信息查询的准确率的要求也越来越高,而全文检索系统因为检索功能强大、效率高而越来越流行。lucene 是一个基于 java 的开放源代码的全文检索引擎工具包,能够方便地嵌入到各种应用

11、中实现索引和搜索功能。本系统用此技术来实现对网络教育资源的全文检索,通过对索引的查询可以快速、可靠的得到相关信息,并在查询过程中应用中文分词技术,以使得查询结果更加准确和全面。 传统的数据库检索方式大都采用传统的关键词匹配算法进行查询,并不能很准确地返回相关信息,无法理解语义。而用来对特定领域的概念及术语给予明确的形式化描述的本体论不仅为规范化资源描述及用户查询提供了基础,也为更准确地搜索信息提供了保证。本人在此项目中使用 protg 建立了知识本体,并使用 owl api 解析本体,实现了一个能使用本体中已有的概念进行的单词补全,并查找特定概念的子概念,实现了推理补全,这两者组成了搜索框的自

12、动完成功能,能在用户搜索时提供相关的关键字智能提示,还可以对搜索词进行语义扩展后搜索。1.2 研究背景lucene 是 apache 软件基金会 jakarta 项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言) 。 lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。在计算机科学与信息科学领域,理论上,本体是指一种“形式化的,对于共享概念体系的明确而又详细的说明

13、”。本体提供的是一种共享词表,也就是特定领域之中那些存在着的对象类型或概念及其属性和相互关系;或者说,本体就是一种特殊类型的术语集,具有结构化的特点,且更加适合于在计算机系统之中使用;或者说,本体实际上就是对特定领域之中某套概念及其相互之间关系的形式化表达(formal representation) 。本体是人们以自己兴趣领域的知识为素材,运用信息科学的本体论原理而编写出来的作品(artifacts) 。本体一般可以用来针对该领域的属性进行推理,亦可用于定义该领域(也就是对该领域进行建模) 。 湖南人文科技学院毕业设计21.3 本文主要工作本系统从建立之初就注重良好的设计、效率和可移植性,系

14、统先使用 mysql workbench 建立数据库模型,然后将 eer 模型生成建表的 sql 脚本并放在 mysql中运行,以此来创建数据表。本项目使用的集成开发环境是 eclipse 3.6,持久层使用jpa2.0(eclipselink 的实现)框架完成对象-关系映射,web 层使用 jsf2.0(使用 sun 的实现和 primefaces 的扩展)框架,web 和 servlet 容器是 apache tomcat 7.0。系统整体架构为 b/s 模式,遵循 mvc 模式开发,代码符合 javaee 6 标准,使用 jpa 完成orm 映射,使用 jsf 的 facelets 模板

15、技术,将用户界面设计与业务逻辑分离,利用pojo 做实现,在 facelets 模板中使用 jsf 的标准标签、primefaces 扩展标签、jstl标签和 el 表达式实现可维护,可重用的视图,具体实现操作利用 jsf 的managedbean 的方法作为 action 或 acitionlistener,在 faces-config.xml 中定义页面导航规则作为控制器,通过对 jpa 实体类及其 facade 类的操作实现对数据库的操作,使用实体类和 pojo 作为模型,使用 managedbean 和 pojo 实现业务逻辑。对基于本体和 lucene 的网络教育资源检索系统的功能进

16、行分析,主要是分析对网络教育资源的管理、索引和搜索,以及解析本体中的特定类的子类的功能实现。其次进行概要设计,将系统分为 4 个模块:数据库模块(实体模块,facade 模块) ,lucene 模块(索引模块,搜索模块) ,本体模块,web 模块(模型模块、servlet 模块、managedbean 模块) 。再次进行数据库设计,基于本体和 lucene 的网络教育资源检索系统拥有多个数据表,为了实现相应的功能模块,需要对数据库进行相应的设计。然后进行详细设计,最后系统测试。开发一个基于本体和 lucene 的网络教育资源检索系统必须经过以下阶段:可行性研究阶段需求分析阶段总体设计阶段详细设

17、计阶段系统实现阶段测试阶段1.4 本文的组织安排文章绪论部分对本系统的背景和现状进行了简要的介绍,分析了本文的主要工作任务;系统分析部分,包括开发环境和技术分析、可行性分析、需求分析、系统功能分析等,为设计和理解应用程序做了很好的铺垫;系统设计部分主要介绍了系统功能设计和数据库设计,并根据系统要对功能进行了划分和细化;系统实现部分 湖南人文科技学院毕业设计3说明了几个主要模块的算法及代码设计。围绕基于本体和 lucene 的网络教育资源检索系统的项目实施,根据开发过程,重点阐述了软件项目开发的流程,从业务流程、功能描述等方面对系统进行了详尽的分析,从数据库逻辑模型、软件结构、模块加工说明、界面

18、设计四方面对系统进行了详尽的设计。最后对论文进行了总结,并对指导者进行致谢。 湖南人文科技学院毕业设计4第二章第二章 开发环境和开发技术开发环境和开发技术2.1 系统介绍本设计所实现的基于本体和 lucene 的网络教育资源检索系统主要用于研究在lucene 全文检索系统中,如何利用本体中的概念和术语及其之间的关系进行推理,提高搜索的质量。本系统分为数据库模块(实体模块,facade 模块) ,lucene 模块(索引模块,搜索模块) ,本体模块,web 模块(模型模块、servlet 模块、managedbean 模块)四个模块,实现用户的登录与注册、文档的管理和分类、文档的搜索,文档的索引

19、、搜索关键字的智能提示等功能。2.2 系统开发环境开发与运行的环境的选择会影响到数据库设计,本系统开发与运行环境如下:操作系统:ubuntu linux 10.04开发工具:eclipse 3.6数据库管理系统:mysql 5.1服务器:apache tomcat 7.0用 mysql workbench 建立数据模型,然后用模型生成建表的 sql 代码,运行 sql 代码创建数据库模式和数据表2.3 系统开发技术本系统采用 eclipse 3.6 为开发工具,java 为编程语言,mysql 为数据库后台处理,使整个系统具有良好的可移植性,并且可以更换数据库(支持所有主流的数据库,如 mys

20、ql、postgresql、oracle、db2、sybase、microsoft sql server 等)和 servlet容器(apache tomcat、glassfish、jboss、weblogic、websphere 等)。2.3.1 eclipse 简介eclipse 是一个著名的跨平台的自由集成开发环境(ide) 。最初主要用来 java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 c+和 python 的开发工具。eclipse 的本身只是一个框架平台,但是众多插件的支持使得 eclipse 拥有其他功能相对固定的 ide 软件很难具有的灵活性。许多软件开发

21、商以 eclipse 为框架开发自己的 ide。 湖南人文科技学院毕业设计52.3.2 java 简介java,是由 sun microsystems 公司于 1995 年 5 月推出的 java 程序设计语言和java 平台的总称。java 平台由 java 虚拟机(java virtual machine)和 java 应用编程接口(application programming interface、简称 api)构成。java 应用编程接口为java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。2.3.3 jsf 简介java server faces(jsf) 是

22、一种标准的 j2ee 表示层的技术,其主旨是为了使 java 开发人员能够快速的开发基于 java 的 web 应用程序。它不同于其它 java 表示层技术的最大优势是其采用的组件模型,事件驱动,依赖注入。java server faces (jsf) 是一种用于构建 web 应用程序的新标准 java 框架。它提供了一种以组件为中心来开发 java web 用户界面的方法,从而简化了开发。java server faces 的 mvc 实现 jsf 的主要优势之一就是它既是 java web 用户界面标准又是严格遵循模型-视图控制器 (mvc) 设计模式的框架。用户界面代码(视图)与应用程序

23、数据和逻辑(模型)的清晰分离使 jsf 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 jsf 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“faces servlet”(控制器)来处理。2.3.4 jpa 简介 jpa 全称 java persistence api,jpa 通过注解或 xml 描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中。jpa 是 j2ee 中的持久化标准规范,有很多种实现(hibernate jpa、eclipselink 和 toplink 等) 。2.3.5 mysql 简介mysql 是一个跨平台的开源数

24、据库。 “lamp”中的“m”指的就是 mysql,它以其简单易用的特点广泛被广大用户采用, mysql 是 c/s 架构的服务器,服务器端是多线程的,支持不同的后端、多个不同的客户程式和库、管理工具和广泛的应用程式接口(apis),为客户端提供了不同的程序接口和链接库,如c、c+、java、perl、php、tcl 等,也提供了简单的管理工具,如 mysqladmin 等。mysql 是个快速的、多线程、多用户和健壮的 sql 数据库服务器。mysql 服务器支持关键任务、重负载生产系统的使用,也能够将他嵌入到一个大配置(mass-deployed)的软件中去。可以使用命令行工具管理 mys

25、ql 数据库,也可以从 mysql 的网站下载图形管理工具 mysql administrator、mysql query browser 和 mysql workbench。 湖南人文科技学院毕业设计6第三章第三章 可行性与需求分析可行性与需求分析3.1 可行性分析3.1.1 技术可行性jsf 实现表现层,使用 managedbean 和其他 pojo 来处理业务逻辑,jpa 完成orm 映射,再结合 lucene 建立和搜索索引,使用 owl api 分析本体,获得相关的概念或术语,提供搜索关键词提示,并提供语义扩展搜索,因此在技术上是可行的。3.1.2 社会可行性网络教育资源的内容一般很

26、丰富,难以准确地检索,传统的检索方式无法胜任,只有使用全文检索引擎和本体,才能提供比较准确的检索结果,因此本系统在社会上是可行的。3.1.3 经济可行性该系统是个低成本的系统,由一个人单独开发,不会花费太多的人力和财力,一台性能良好的计算机和一系列开源免费的软件就可以完成设计,在经济上是可行的。3.2 系统目标许多含有大量内容的网站都需要提供比较准确的搜索功能方便用户获得自己想要的信息,网络教育资源网站也不例外。这也是网络教育资源应用程序开发常用的功能模块。学生作业管理系统是以 jsf、jpa 和 pojo 为实现基础,以检索网络教育资源为目的,给出了系统架构为 b/s 结构的网络教育资源检索

27、系统,实现了一个全文检索系统和针对领域本体的语义搜索。3.3 功能需求对于登录用户,可以创建教学文档、删除教学文档、编辑教学文档、查看教学文档、搜索教学文档、对教学文档进行分类、创建分类、重命名分类、移动分类、嵌套分类、删除分类。对于没有登录的用户,也可以搜索教学文档、查看教学文档。uml 用例图如图 3-1 所示。 湖南人文科技学院毕业设计7图 3-1 系统 uml 用例图系统主要分为 3 个方面的功能:(1)用户功能:包括 用户注册、登录。(2)管理教学文档:包括创建文档、编辑文档、删除文档、移动文档到其他分类、创建分类、移动分类、删除分类、重命名分类和分类嵌套等,供已登录用户访问。(3)

28、检索教学文档:包括搜索关键字提示、搜索文档、搜索词的语义扩展,供所有用户访问。3.4 性能需求系统具有良好的灵活性,可扩展性和可移植性,系统采用浏览器/服务器模型。在数据库方面,项目使用 jpa 完成 orm 映射,使用 jpql 和实体类操作数据库,避免了对某一种数据库的依赖,可以很方便的移植到其他的数据库上去。在表现层,使用 jsf 的 facelets 模板技术用来创建可维护,可重用的 web 页。在业务层,使用managedbean 处理要显示在页面的数据和业务逻辑,还使用applicationcontextlistener 这个上下文监听器完成 web 应用程序的初始化和关闭时的资源

29、清理工作。系统初始化时载入并解析本体数据,提高了关键字提示的速度。系统把建立索引和删除索引的工作交给线程池,在后台完成,不影响用户体验。系统的文档管理使用了 ajax 技术根据用户需要动态载入数据(分类的树形结构和文档 湖南人文科技学院毕业设计8的分页) ,减小了系统的开销,提高了用户体验。系统的升级只涉及到服务端,只要服务端做出相应的修改升级,客户端自然会实现新的系统更新。 湖南人文科技学院毕业设计9第四章第四章 系统概要设计系统概要设计4.1 模块设计4.1.1 系统功能层次图该系统主要由以下功能模块组成,如图 4-1 所示:图 4-1 系统功能层次图 湖南人文科技学院毕业设计104.1.

30、2 系统 uml 包图图 4-2 系统 uml 包图4.1.3 数据库模块数据库模块为 .data,包含两个子模块:实体模块(.data.entity)和实体操作模块(.data.facade)。 湖南人文科技学院毕业设计11图 4-3 实体模块 uml 类图实体模块负责完成对象-关系映射,实现 java 对象到数据库的持久化,user 类表示用户,category 类表示分类,doc 类表示文档。 湖南人文科技学院毕业设计12图 4-4 实体操作模块 uml 类图实体操作模块封装了对实体的操作:插入、删除、更新、查询等,abstractfacade

31、封装了操作实体的通用操作:find、edit、create、refresh、remove 和count,其他的 faade 类继承 abstractfacade,增加了具体对于某一类实体的操作,docfacade 封装了对 doc 实体的操作,userfacade 封装了对 user 实体的操作,categoryfacade 封装了对 category 实体的操作。4.1.4 web 模块数据库模块所在的包为 .web,包括 servlet 模块(.web.servlet),managedbean 模块(.web.managedbean)和数据模型模块

32、(.web.model)。 湖南人文科技学院毕业设计13图 4-5 servlet 模块 uml 类图servlet 模块包含一个通用的应用程序上下文监听器,实现了使用 jpa 框架的web 应用程序的初始化工作(创建实体管理器工厂等)和关闭工作(关闭实体管理器工厂和 unregister 数据库驱动),提供了在系统初始化和关闭时插入代码的的抽象方法,提供了对象映射、添加对象到对象映射和从对象映射中获取对象的方法,还包含一个子类提供持久化单元的名称,定制系统初始化和关闭时的工作。 湖南人文科技学院毕业设计14图 4-6 数据模型模块 uml 类图数据模型模块提供了托管 bean

33、需要使用的一些数据模型,用于表示分类树和文档表,categorytreenode 表示分类树节点,documenttable 提供 categorytreenode对 documentlazydatamodel 访问,documentlazydatamodel 是一个用于 ajax 分页表格的模型,能根据用户请求动态载入数据。 湖南人文科技学院毕业设计15图 4-7 managedbean 模块 uml 类图managedbean 模块包含 jsf 页面需要使用的托管 bean,通过配置 faces-config.xml 进行依赖注入,managedbeanconstructorutil 也提

34、供一系列静态方法获得其他托管 bean(session bean 和 application bean)的引用和 request、session 和response 等,userbean 管理用户登录,提供 login、logout 和判断登录状态的方法,categorytreebean 是分类树的模型,为显示分类树提供数据,并对树节点的选择和展开事件进行响应,动态地改变树的结构,分类路径和文档表的内容。 湖南人文科技学院毕业设计16图 4-8 用户表单模块 uml 类图用户表单模块用来处理用户的登录和注册的表单,loginform 处理用户登录的表单,registerform 处理用户注册的

35、表单。 湖南人文科技学院毕业设计17图 4-9 文档表单模块 uml 类图文档表单模块处理文档的创建、编辑、删除、搜索表单,实现文档的查看功能,doceditform 处理文档编辑表单,docdelform 处理文档删除表单,docviewform 用于从数据库取出文档用于显示,docnewform 处理文档创建表单,searchform 处理文档搜索表单。 湖南人文科技学院毕业设计18图 4-10 分类表单模块 uml 类图分类表单模块处理分类的创建、删除和编辑的表单,catnewform 处理分类创建表单,cateditform 处理分类编辑表单,catdelform 处理分类删除表单。4

36、.1.3 lucene 模块lucene 模块为(.lucene),包含两个子模块:索引模块(.lucene.index)和搜索模块(.lucene.search)。 湖南人文科技学院毕业设计19图 4-11 lucene 模块 uml 类图lucene 模块完成 lucene 目录和分析器的创建和关闭,实现对索引的创建、编辑、删除和搜索,docsearcher 实现对索引的搜索,docindexer 实现对文档的索引的操作, 湖南人文科技学院毕业设计20把操作放在线程池中执行,writedocindextasks 实现了更新索引的任务,deleted

37、ocindextask 实现了删除索引的任务。4.1.4 本体模块本体模块位于 .ontology。图 4-12 本体模块 uml 类图本体模块实现了本体的载入和解析,对搜索语句中的词汇进行单词补全和语义补全的功能,librarypath 表示本体文件的磁盘路径,libraryfile 表示本体文件,educationontology 表示本体,getrelativewords 方法用于根据搜索语句从本体中获得相关词列表,包括单词补全和语义补全。 湖南人文科技学院毕业设计214.2 系统数据库设计4.2.1 eer 图系统 eer 图如图 4-5 所示:图 4-5 系统 eer

38、图用户表用来存储用户信息;一个用户可以创建多个文档和分类;一个分类可以包含多个分类和多个文档。4.2.2 数据表设计系统主要数据库表如下:表 4-1 用户表(user)标识数据类型数据范围备注emailvarchar60用户的唯一标识,主键namevarchar30名字passwordvarchar20密码表 4-2 分类表(category) 湖南人文科技学院毕业设计22标识数据类型数据范围备注category_idint分类的唯一标识,主键namevarchar45分类名parent_category_idint父分类的 category_iduser_idvarchar60分类所属用户的

39、 email表 4-3 学生表(doc)标识数据类型数据范围备注doc_idint文档的唯一标识,主键titlevarchar60文档的标题contentlongtext少于 4294967296 个字节(2*32)文档的内容change_timedatetime修改时间click_numberint点击次数user_idvarchar60所属用户的 emailcategory_idint所属分类的 category_id表 4-4 索引文件表(index_file)标识数据类型数据范围备注file_namevarchar15文件名,主键doc_idint文档的 doc_id,外键(doc)c

40、hange_timedatetime修改时间表 4-5 管理员表(admin)标识数据类型数据范围备注emailvarchar60管理员 email,主键namevarchar30名字passwordvarchar20密码recent_login_datedate最近登录日期4.2.3 创建数据表数据库建立代码(edusearch.sql)如下:set old_unique_checks=unique_checks, unique_checks=0;set old_foreign_key_checks=foreign_key_checks, foreign_key_checks=0; 湖南人文

41、科技学院毕业设计23set old_sql_mode=sql_mode, sql_mode=traditional;drop schema if exists edu_search ;create schema if not exists edu_search default character set utf8 ;- - table edu_search.user 用户表- -drop table if exists edu_search.user ;create table if not exists edu_search.user ( email varchar(60) not null

42、 , name varchar(30) null , password varchar(20) not null , recent_login_date date not null , primary key (email) )engine = innodb;- - table edu_search.category 分类表- -drop table if exists edu_search.category ;create table if not exists edu_search.category ( category_id int not null auto_increment , n

43、ame varchar(45) null , prarent_category_id int null , user_id varchar(60) null , primary key (category_id) , index fk_category_1 (prarent_category_id asc) , index fk_category_2 (user_id asc) , constraint fk_category_1 foreign key (prarent_category_id ) references edu_search.category (category_id ) o

44、n delete cascade on update cascade, constraint fk_category_2 foreign key (user_id ) references edu_search.user (email ) on delete cascade on update cascade)engine = innodb;- - table edu_search.doc 文档表- -drop table if exists edu_search.doc ;create table if not exists edu_search.doc ( doc_id int not n

45、ull auto_increment , title varchar(60) null , 湖南人文科技学院毕业设计24 content longtext null , change_time datetime null , click_number int null , user_id varchar(60) null , category_id int null , primary key (doc_id) , index fk_doc_1 (user_id asc) , index fk_doc_2 (category_id asc) , constraint fk_doc_1 fore

46、ign key (user_id ) references edu_search.user (email ) on delete cascade on update cascade, constraint fk_doc_2 foreign key (category_id ) references edu_search.category (category_id ) on delete cascade on update cascade)engine = innodb;- - table edu_search.index_file 索引文件表- -drop table if exists ed

47、u_search.index_file ;create table if not exists edu_search.index_file ( file_name varchar(15) not null , doc_id int null , change_time datetime null , primary key (file_name) , index fk_index_file_1 (doc_id asc) , constraint fk_index_file_1 foreign key (doc_id ) references edu_search.doc (doc_id ) o

48、n delete cascade on update cascade)engine = innodb;- - table edu_search.admin 管理员表- -drop table if exists edu_search.admin ;create table if not exists edu_search.admin ( email varchar(60) not null , name varchar(30) null , password varchar(20) not null , recent_login_date date not null , 湖南人文科技学院毕业设

49、计25 primary key (email) )engine = innodb;set sql_mode=old_sql_mode;set foreign_key_checks=old_foreign_key_checks;set unique_checks=old_unique_checks;数据库功能及约束:本系统全部实现登录用户对数据库的操作,如添加,删除,更新等操作,故为了保持数据的一致性,本数据库表设计的时候设计了主键约束和外键约束,在数据集中基本已经说明包含哪些主键以及外键,本系统数据库的外键约束主要是doc.user_id 引用 user.email、doc.category_

50、id 引用 category.category_id 和category.category_id 引用 category.parent_category_id。 湖南人文科技学院毕业设计26第五章第五章 系统实现系统实现5.1 本体模块系统在初始化时读取并解析本体 xml 文档,通过 owl api 获取本体中所有的概念。本系统搜索框的自动完成的内容通过搜索本体中已知的概念及其子概念来获得,有两种补全方式:单词补全和语义补全(子类补全)。它的执行结果如图 5-1 所示。图 5-1 搜索框自动完成界面自动完成搜索框的界面实现(/web-inf/share/searchform.xhtml): 自

51、动完成的 managedbean 实现(.web.managedbean.autocompletesearchkeywordbean.java):public class autocompletesearchkeywordbean public list complete(string query) return ontologyutil.getcurrentinstance().getrelativewords(query,10); 湖南人文科技学院毕业设计27载入并解析本体,获得相关词的本体工具的实现(.ontology.ontologyutil.java):p

52、ublic class ontologyutil private string librarypath;private file libraryfile;private owlontologymanager manager;private owlontology educationontology;private iri educationiri;private set owlclasses;private map owlclassmap;public ontologyutil() this.librarypath = applicationcontextlistener.getcontext

53、parameter(.ontology.librarypath);if (this.librarypath != null) this.libraryfile = new file(this.librarypath);if (libraryfile.isfile() this.manager = owlmanager.createowlontologymanager();cationiri = iri.create(libraryfile);try cationontology = manager.loadontologyfromontologyd

54、ocument(cationiri);this.owlclasses = educationontology.getclassesinsignature();this.owlclassmap = new hashmap();for (owlclass owlclass : this.owlclasses) this.owlclassmap.put(owlclass.getiri().getfragment().tolowercase(locale.simplified_chinese),owlclass); catch (owlontologycreationexception

55、 e) e.printstacktrace(); 湖南人文科技学院毕业设计28public list getrelativewords(string word) return this.getrelativewords(word, 10);public list getrelativewords(string word, int maxamount) list relativewords = new arraylist(maxamount);if (cationontology != null & word != null & word.length() 0)

56、/ split to words by spacestring splitwords = word.split( );list referencewords = new linkedlist();for (int i = splitwords.length - 1; i = 0; i-) string splitword = splitwordsi;if (splitword != null & splitword.length() != 0& !referencewords.contains(splitword) referencewords.add(splitword);/

57、 word completeif (!word.endswith( ) string lastword = referencewords.get(0).tolowercase(locale.simplified_chinese);int lastwordlength = lastword.length();for (map.entry entry : this.owlclassmap.entryset() string entrykey = entry.getkey();if (entrykey.startswith(lastword)& entrykey.length() != la

58、stwordlength) string owlclassname = entry.getvalue().getiri().getfragment();relativewords.add(word+ owlclassname.substring(lastwordlength);if (relativewords.size() = maxamount) break; 湖南人文科技学院毕业设计29/ subclass completeif (relativewords.size() maxamount) list subclasses = new linkedlist();set classexp

59、ressionset = new hashset();setmap.entry entryset = this.owlclassmap.entryset();addsubclass: for (string referenceword : referencewords) for (map.entry entry : entryset) if (relativewords.size() = maxamount) break addsubclass;if (entry.getkey().equals(referenceword.tolowercase(locale.simplified_chine

60、se) owlclass owlclass = entry.getvalue();subclasses.clear();subclasses.add(owlclass);do classexpressionset.clear();for (owlclass subclass : subclasses) classexpressionset.addall(subclass.getsubclasses(educationontology);subclasses.clear();for (owlclassexpression classexpression : classexpressionset) if (relativewords.siz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论