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

3、,并在法律许可的范围内受到最大可能的起诉。 目 录 摘要 .i abstract.i 第一章 绪 论.1 1.1 引言.1 1.2 研究背景.1 1.3 本文主要工作.2 1.4 本文的组织安排.2 第二章 开发环境和开发技术.4 2.1 系统介绍.4 2.2 系统开发环境.4 2.3 系统开发技术.4 2.3.1 eclipse 简介.4 2.3.2 java 简介.5 2.3.3 jsf 简介.5 2.3.4 jpa 简介.5 2.3.5 mysql 简介.5 第三章 可行性与需求分析.6 3.1 可行性分析.6 3.1.1 技术可行性.6 3.1.2 社会可行性.6 3.1.3 经济可行

4、性.6 3.2 系统目标.6 3.3 功能需求.6 3.4 性能需求.7 第四章 系统概要设计.9 4.1 模块设计.9 4.1.1 系统功能层次图.9 4.1.2 系统 uml 包图.10 4.1.3 数据库模块.10 4.1.4 web 模块.12 4.1.3 lucene 模块.18 4.1.4 本体模块.20 4.2 系统数据库设计.21 4.2.1 eer 图.21 4.2.2 数据表设计.21 4.2.3 创建数据表.23 第五章 系统实现.26 5.1 本体模块.26 5.2 lucene模块.31 5.2.1 索引更新模块.32 5.2.2 索引搜索模块.36 5.3 数据模块

5、.38 5.3.1 实体模块.38 5.3.1 实体操作模块.38 5.4 web模块.38 5.4.1 servlet 模块 .38 5.4.2 managedbean 模块.38 5.4.3 有关网页的 facelets 实现.41 第六章 系统测试.43 6.1 系统搜索模块的测试.43 6.2 资源模块的测试.44 6.3 用户模块的测试.45 结束语.47 致 谢.48 参考文献.48 基于本体和基于本体和 lucene 的网络教育资源检索系统设计与实现的网络教育资源检索系统设计与实现 摘要摘要:随着 internet/intranet 的迅速发展和广泛普及,越来越多的 web2.0

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

7、;jpa;lucene;owl design and implementation of network education resources retrieval system based on ontology and lucene abstract: 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

8、 in internet, people need to find the information they need, 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

9、and lucene, using eclipse 3.6 as development environment, 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

10、network education resources. system testing showed that the system run stability, has good accessibility and reliability, simple operation. key words: education resource search; ontology; jsf; jpa; lucene; owl 第一章第一章 绪绪 论论 1.1 引言 由于 internet 的迅猛发展,信息迅速膨胀,人们对信息查询的准确率的要求也越 来越高,而全文检索系统因为检索功能强大、效率高而越来越流

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

12、,实现了一个能使用本体中已有的概念进行的单词补全,并查找特定 概念的子概念,实现了推理补全,这两者组成了搜索框的自动完成功能,能在用户 搜索时提供相关的关键字智能提示,还可以对搜索词进行语义扩展后搜索。 1.2 研究背景 lucene 是 apache 软件基金会 jakarta 项目组的一个子项目,是一个开放源代码的 全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎 的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种 西方语言) 。 lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便 的在目标系统中实现全文检索的功能,或者是以此

13、为基础建立起完整的全文检索引 擎。 在计算机科学与信息科学领域,理论上,本体是指一种“形式化的,对于共享概 念体系的明确而又详细的说明”。本体提供的是一种共享词表,也就是特定领域之中 那些存在着的对象类型或概念及其属性和相互关系;或者说,本体就是一种特殊类 型的术语集,具有结构化的特点,且更加适合于在计算机系统之中使用;或者说, 本体实际上就是对特定领域之中某套概念及其相互之间关系的形式化表达(formal representation) 。本体是人们以自己兴趣领域的知识为素材,运用信息科学的本体论 原理而编写出来的作品(artifacts) 。本体一般可以用来针对该领域的属性进行推理, 亦可

14、用于定义该领域(也就是对该领域进行建模) 。 1.3 本文主要工作 本系统从建立之初就注重良好的设计、效率和可移植性,系统先使用 mysql workbench 建立数据库模型,然后将 eer 模型生成建表的 sql 脚本并放在 mysql 中运行,以此来创建数据表。本项目使用的集成开发环境是 eclipse 3.6,持久层使用 jpa2.0(eclipselink 的实现)框架完成对象-关系映射,web 层使用 jsf2.0(使用 sun 的 实现和 primefaces 的扩展)框架,web 和 servlet 容器是 apache tomcat 7.0。系统整 体架构为 b/s 模式,遵

15、循 mvc 模式开发,代码符合 javaee 6 标准,使用 jpa 完成 orm 映射,使用 jsf 的 facelets 模板技术,将用户界面设计与业务逻辑分离,利用 pojo 做实现,在 facelets 模板中使用 jsf 的标准标签、primefaces 扩展标签、jstl 标签和 el 表达式实现可维护,可重用的视图,具体实现操作利用 jsf 的 managedbean 的方法作为 action 或 acitionlistener,在 faces-config.xml 中定义页面 导航规则作为控制器,通过对 jpa 实体类及其 facade 类的操作实现对数据库的操作, 使用实体类

16、和 pojo 作为模型,使用 managedbean 和 pojo 实现业务逻辑。对基于 本体和 lucene 的网络教育资源检索系统的功能进行分析,主要是分析对网络教育资 源的管理、索引和搜索,以及解析本体中的特定类的子类的功能实现。其次进行概 要设计,将系统分为 4 个模块:数据库模块(实体模块,facade 模块) ,lucene 模块 (索引模块,搜索模块) ,本体模块,web 模块(模型模块、servlet 模块、 managedbean 模块) 。再次进行数据库设计,基于本体和 lucene 的网络教育资源检 索系统拥有多个数据表,为了实现相应的功能模块,需要对数据库进行相应的设计

17、。 然后进行详细设计,最后系统测试。 开发一个基于本体和 lucene 的网络教育资源检索系统必须经过以下阶段: 可行性研究阶段 需求分析阶段 总体设计阶段 详细设计阶段 系统实现阶段 测试阶段 1.4 本文的组织安排 文章绪论部分对本系统的背景和现状进行了简要的介绍,分析了本文的主要工 作任务;系统分析部分,包括开发环境和技术分析、可行性分析、需求分析、系统 功能分析等,为设计和理解应用程序做了很好的铺垫;系统设计部分主要介绍了系 统功能设计和数据库设计,并根据系统要对功能进行了划分和细化;系统实现部分 说明了几个主要模块的算法及代码设计。围绕基于本体和 lucene 的网络教育资源检 索系

18、统的项目实施,根据开发过程,重点阐述了软件项目开发的流程,从业务流程、 功能描述等方面对系统进行了详尽的分析,从数据库逻辑模型、软件结构、模块加 工说明、界面设计四方面对系统进行了详尽的设计。最后对论文进行了总结,并对 指导者进行致谢。 第二章第二章 开发环境和开发技术开发环境和开发技术 2.1 系统介绍 本设计所实现的基于本体和 lucene 的网络教育资源检索系统主要用于研究在 lucene 全文检索系统中,如何利用本体中的概念和术语及其之间的关系进行推理, 提高搜索的质量。本系统分为数据库模块(实体模块,facade 模块) ,lucene 模块 (索引模块,搜索模块) ,本体模块,we

19、b 模块(模型模块、servlet 模块、 managedbean 模块)四个模块,实现用户的登录与注册、文档的管理和分类、文档 的搜索,文档的索引、搜索关键字的智能提示等功能。 2.2 系统开发环境 开发与运行的环境的选择会影响到数据库设计,本系统开发与运行环境如下: 操作系统:ubuntu linux 10.04 开发工具:eclipse 3.6 数据库管理系统:mysql 5.1 服务器:apache tomcat 7.0 用 mysql workbench 建立数据模型,然后用模型生成建表的 sql 代码,运 行 sql 代码创建数据库模式和数据表 2.3 系统开发技术 本系统采用 e

20、clipse 3.6 为开发工具,java 为编程语言,mysql 为数据库后台处 理,使整个系统具有良好的可移植性,并且可以更换数据库(支持所有主流的数据库, 如 mysql、postgresql、oracle、db2、sybase、microsoft sql server 等)和 servlet 容器(apache tomcat、glassfish、jboss、weblogic、websphere 等)。 2.3.1 eclipse 简介 eclipse 是一个著名的跨平台的自由集成开发环境(ide) 。最初主要用来 java 语 言开发,但是目前亦有人通过插件使其作为其他计算机语言比如

21、c+和 python 的开 发工具。eclipse 的本身只是一个框架平台,但是众多插件的支持使得 eclipse 拥有其 他功能相对固定的 ide 软件很难具有的灵活性。许多软件开发商以 eclipse 为框架开 发自己的 ide。 2.3.2 java 简介 java,是由 sun microsystems 公司于 1995 年 5 月推出的 java 程序设计语言和 java 平台的总称。java 平台由 java 虚拟机(java virtual machine)和 java 应用编程 接口(application programming interface、简称 api)构成。jav

22、a 应用编程接口为 java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。 2.3.3 jsf 简介 java server faces(jsf) 是一种标准的 j2ee 表示层的技术,其主旨是为了使 java 开发人员能够快速的开发基于 java 的 web 应用程序。它不同于其它 java 表 示层技术的最大优势是其采用的组件模型,事件驱动,依赖注入。 java server faces (jsf) 是一种用于构建 web 应用程序的新标准 java 框架。它 提供了一种以组件为中心来开发 java web 用户界面的方法,从而简化了开发。 java server f

23、aces 的 mvc 实现 jsf 的主要优势之一就是它既是 java web 用 户界面标准又是严格遵循模型-视图控制器 (mvc) 设计模式的框架。用户界面代 码(视图)与应用程序数据和逻辑(模型)的清晰分离使 jsf 应用程序更易于管理。 为了准备提供页面对应用程序数据访问的 jsf 上下文和防止对页面未授权或不正确 的访问,所有与应用程序的用户交互均由一个前端“faces servlet”(控制器)来处理。 2.3.4 jpa 简介 jpa 全称 java persistence api,jpa 通过注解或 xml 描述对象关系表的映射 关系,并将运行期的实体对象持久化到数据库中。jp

24、a 是 j2ee 中的持久化标准规范, 有很多种实现(hibernate jpa、eclipselink 和 toplink 等) 。 2.3.5 mysql 简介 mysql 是一个跨平台的开源数据库。 “lamp”中的“m”指的就是 mysql,它以 其简单易用的特点广泛被广大用户采用, mysql 是 c/s 架构的服务器,服务器端 是多线程的,支持不同的后端、多个不同的客户程式和库、管理工具和广泛的应用 程式接口(apis),为客户端提供了不同的程序接口和链接库,如 c、c+、java、perl、php、tcl 等,也提供了简单的管理工具,如 mysqladmin 等。 mysql 是

25、个快速的、多线程、多用户和健壮的 sql 数据库服务器。mysql 服务器支持 关键任务、重负载生产系统的使用,也能够将他嵌入到一个大配置(mass-deployed)的 软件中去。可以使用命令行工具管理 mysql 数据库,也可以从 mysql 的网站下载 图形管理工具 mysql administrator、mysql query browser 和 mysql workbench。 第三章第三章 可行性与需求分析可行性与需求分析 3.1 可行性分析 3.1.1 技术可行性 jsf 实现表现层,使用 managedbean 和其他 pojo 来处理业务逻辑,jpa 完成 orm 映射,再结

26、合 lucene 建立和搜索索引,使用 owl api 分析本体,获得相关的 概念或术语,提供搜索关键词提示,并提供语义扩展搜索,因此在技术上是可行的。 3.1.2 社会可行性 网络教育资源的内容一般很丰富,难以准确地检索,传统的检索方式无法胜任, 只有使用全文检索引擎和本体,才能提供比较准确的检索结果,因此本系统在社会 上是可行的。 3.1.3 经济可行性 该系统是个低成本的系统,由一个人单独开发,不会花费太多的人力和财力, 一台性能良好的计算机和一系列开源免费的软件就可以完成设计,在经济上是可行 的。 3.2 系统目标 许多含有大量内容的网站都需要提供比较准确的搜索功能方便用户获得自己想

27、要的信息,网络教育资源网站也不例外。这也是网络教育资源应用程序开发常用的 功能模块。学生作业管理系统是以 jsf、jpa 和 pojo 为实现基础,以检索网络教育 资源为目的,给出了系统架构为 b/s 结构的网络教育资源检索系统,实现了一个全 文检索系统和针对领域本体的语义搜索。 3.3 功能需求 对于登录用户,可以创建教学文档、删除教学文档、编辑教学文档、查看教学 文档、搜索教学文档、对教学文档进行分类、创建分类、重命名分类、移动分类、 嵌套分类、删除分类。对于没有登录的用户,也可以搜索教学文档、查看教学文档。 uml 用例图如图 3-1 所示。 图 3-1 系统 uml 用例图 系统主要分

28、为 3 个方面的功能: (1)用户功能:包括 用户注册、登录。 (2)管理教学文档:包括创建文档、编辑文档、删除文档、移动文档到其他分 类、创建分类、移动分类、删除分类、重命名分类和分类嵌套等,供已登录用户访 问。 (3)检索教学文档:包括搜索关键字提示、搜索文档、搜索词的语义扩展,供 所有用户访问。 3.4 性能需求 系统具有良好的灵活性,可扩展性和可移植性,系统采用浏览器/服务器模型。 在数据库方面,项目使用 jpa 完成 orm 映射,使用 jpql 和实体类操作数据库,避 免了对某一种数据库的依赖,可以很方便的移植到其他的数据库上去。在表现层, 使用 jsf 的 facelets 模板

29、技术用来创建可维护,可重用的 web 页。在业务层,使用 managedbean 处理要显示在页面的数据和业务逻辑,还使用 applicationcontextlistener 这个上下文监听器完成 web 应用程序的初始化和关闭时 的资源清理工作。系统初始化时载入并解析本体数据,提高了关键字提示的速度。 系统把建立索引和删除索引的工作交给线程池,在后台完成,不影响用户体验。系 统的文档管理使用了 ajax 技术根据用户需要动态载入数据(分类的树形结构和文档 的分页) ,减小了系统的开销,提高了用户体验。系统的升级只涉及到服务端,只要 服务端做出相应的修改升级,客户端自然会实现新的系统更新。

30、第四章第四章 系统概要设计系统概要设计 4.1 模块设计 4.1.1 系统功能层次图 该系统主要由以下功能模块组成,如图 4-1 所示: 图 4-1 系统功能层次图 4.1.2 系统 uml 包图 图 4-2 系统 uml 包图 4.1.3 数据库模块 数据库模块为 .data,包含两个子模块:实体模块(.data.entity)和 实体操作模块(.data.facade)。 图 4-3 实体模块 uml 类图 实体模块负责完成对象-关系映射,实现 java 对象到数据库的持久化,user 类表 示用户,category 类表示分类,doc 类表示文档

31、。 图 4-4 实体操作模块 uml 类图 实体操作模块封装了对实体的操作:插入、删除、更新、查询等, abstractfacade 封装了操作实体的通用操作:find、edit、create、refresh、remove 和 count,其他的 faade 类继承 abstractfacade,增加了具体对于某一类实体的操作, docfacade 封装了对 doc 实体的操作,userfacade 封装了对 user 实体的操作, categoryfacade 封装了对 category 实体的操作。 4.1.4 web 模块 数据库模块所在的包为 .web,包括 servle

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

33、系统初始化和关闭时的工作。 图 4-6 数据模型模块 uml 类图 数据模型模块提供了托管 bean 需要使用的一些数据模型,用于表示分类树和文 档表,categorytreenode 表示分类树节点,documenttable 提供 categorytreenode 对 documentlazydatamodel 访问,documentlazydatamodel 是一个用于 ajax 分页表 格的模型,能根据用户请求动态载入数据。 图 4-7 managedbean 模块 uml 类图 managedbean 模块包含 jsf 页面需要使用的托管 bean,通过配置 faces- confi

34、g.xml 进行依赖注入,managedbeanconstructorutil 也提供一系列静态方法获得 其他托管 bean(session bean 和 application bean)的引用和 request、session 和 response 等,userbean 管理用户登录,提供 login、logout 和判断登录状态的方法, categorytreebean 是分类树的模型,为显示分类树提供数据,并对树节点的选择和展 开事件进行响应,动态地改变树的结构,分类路径和文档表的内容。 图 4-8 用户表单模块 uml 类图 用户表单模块用来处理用户的登录和注册的表单,loginfo

35、rm 处理用户登录的表 单,registerform 处理用户注册的表单。 图 4-9 文档表单模块 uml 类图 文档表单模块处理文档的创建、编辑、删除、搜索表单,实现文档的查看功能, doceditform 处理文档编辑表单,docdelform 处理文档删除表单,docviewform 用 于从数据库取出文档用于显示,docnewform 处理文档创建表单,searchform 处理 文档搜索表单。 图 4-10 分类表单模块 uml 类图 分类表单模块处理分类的创建、删除和编辑的表单,catnewform 处理分类创建 表单,cateditform 处理分类编辑表单,catdelfor

36、m 处理分类删除表单。 4.1.3 lucene 模块 lucene 模块为(.lucene),包含两个子模块:索引模块 (.lucene.index)和搜索模块(.lucene.search)。 图 4-11 lucene 模块 uml 类图 lucene 模块完成 lucene 目录和分析器的创建和关闭,实现对索引的创建、编辑、 删除和搜索,docsearcher 实现对索引的搜索,docindexer 实现对文档的索引的操作, 把操作放在线程池中执行,writedocindextasks 实现了更新索引的任务, deletedocindextas

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

38、一个用户可以创建多个文档和分类;一个分类可以 包含多个分类和多个文档。 4.2.2 数据表设计 系统主要数据库表如下: 表 4-1 用户表(user) 标识数据类型数据范围备注 emailvarchar60 用户的唯一标识,主键 namevarchar30 名字 passwordvarchar20 密码 表 4-2 分类表(category) 标识数据类型数据范围备注 category_idint 分类的唯一标识,主键 namevarchar45 分类名 parent_category_idint父分类的 category_id user_idvarchar60分类所属用户的 email 表

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

40、键(doc) change_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_

41、key_checks=0; set 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(

42、60) not null , 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

43、 auto_increment , name 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.catego

44、ry (category_id ) on 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_sea

45、rch.doc ( doc_id int not null auto_increment , title varchar(60) null , 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

46、_doc_1 foreign 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 t

47、able if exists edu_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_sear

48、ch.doc (doc_id ) on 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 da

49、te not null , 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.

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

51、rm.xhtml): 自动完成的 managedbean 实现 (.web.managedbean.autocompletesearchkeywordbean.java): public class autocompletesearchkeywordbean public list complete(string query) return ontologyutil.getcurrentinstance().getrelativewords(query,10); 载入并解析本体,获得相关词的本体工具的实现 (.ontology.ontologyutil.java):

52、 public 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 .

53、getcontextparameter(.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 .loadontolo

54、gyfromontologydocument(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 (owlontol

55、ogycreationexception e) e.printstacktrace(); public list getrelativewords(string word) return this.getrelativewords(word, 10); public list getrelativewords(string word, int maxamount) list relativewords = new arraylist(maxamount); if (cationontology != null list referencewords = new linkedli

56、st(); for (int i = splitwords.length - 1; i = 0; i-) string splitword = splitwordsi; if (splitword != null / word complete if (!word.endswith( ) string lastword = referencewords.get(0).tolowercase( locale.simplified_chinese); int lastwordlength = lastword.length(); for (map.entry entry : this.owlcla

57、ssmap .entryset() string entrykey = entry.getkey(); if (entrykey.startswith(lastword) relativewords.add(word + owlclassname.substring(lastwordlength); if (relativewords.size() = maxamount) break; / subclass complete if (relativewords.size() maxamount) list subclasses = new linkedlist(); set classexp

58、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.simplifie

59、d_chinese) 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 : class

60、expressionset) if (relativewords.size() = maxamount) break addsubclass; if (!classexpression.isanonymous() owlclass subclass = classexpression .asowlclass(); relativewords.add(word + + subclass.getiri() .getfragment(); subclasses.add(subclass); while (subclasses.size() 0 return relativewords; privat

温馨提示

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

评论

0/150

提交评论