《图书馆辅助查询系统毕业论文设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《图书馆辅助查询系统毕业论文设计与实现毕业论文.docx(60页珍藏版)》请在第一文库网上搜索。
1、摘要随着信息时代的发展,每天都有海量的数字化信息在生成、存储、传播和转换。这种趋势使用户在得到更多信息的同时,也不可避免地加剧了用户筛选信息的困难。因此如何高效的存储和查询信息,建立能够让用户迅速查询到所需信息就是一个很值得研究的问题.本毕业设计的课题是“图书馆辅助查询系统的设计和实现”,目的是为了方便同学们能够快捷有效的从众多的图书信息中查找到自己所需的资料。本系统是以Lucene开发包为基础进行开发的,使用的开发工具是MyEclipse5.5,程序语言为JSP,中间件为Tomcat 5.5,后台数据库为Oracle 9i数据库。关键词:Lucene ,全文检索,JSP , Tomcat ,
2、 Oracle 9iABSTRACTWith the development of the information technology, the mass of digitalinformation is being stored, transmitted and converted everyday. This makes usersreceive more information, but also inevitably exacerbates the difficulties when usersfilter information. So, it is very worthy of
3、study that how to efficiently store and queryinformation to enable users to quickly set up for the required information.The graduation project is called Design and Implementation the AuxiliaryEnquiry System for Library. It mainly to help students to find information from tens ofthousands of books th
4、ey need fast and effectively.The system is based on Lucene development kits. It uses MyEclipse 5.5, JSP,Tomcat 5.5, and Oracle 9i database.Keywords: Lucene, Full Text Search, JSP, Tomcat, Oracle 9i目录摘要I第1章引言1第2章Lucene介绍32.1 Lucene的全文索引与数据库索引32.2 Lucene 的结构42.3 本章小结5第3章系统分析与设计63.1 数据转换63.2 索引构建73.3 检
5、索103.4 排序优化14本章小结14第4章 软件实现及测试154.1 系统数据库设计154.2 图书管理员页面的设计和实现164.3 普通用户页面的设计和实现264.4 系统测试314.5 本章小结32第5章 毕业设计问题及解决335.1 安装Oracle9i数据库后带来的问题335.2 Tomcat中文显示问题345.3 本章小结35第6章结束语36致谢38参考文献39附录:Isd.IndexMagager类源代石马40附录二:news.sql_data 类源代码52第1章引言图书馆是学生和老师获得知识的重要场所,一直以来,高校对图书馆的建设都非常重视,至少藏书达到几十余万册。以后仍有较大
6、幅度增加的趋势。这么庞大的数据信息管理当然离不开计算机了,但是我们在日常查找借阅书籍的时候经常会遇到这样的问题,找不到自己想要的资料,就以为图书馆的资料很少。其实事实上并不是我们想象的那样,而是图书馆的查询系统不够完善的缘故,我们往往要输入准确的书名,或是书号、作者后才能查到所需要的书的信息,但是这并不符合我们实际的需求。在现实中我们常常是只记得某本书的书名的几个词,或是知道自己需要的书是某一方面的资料每当这个时候,我们往往会使用Google,Baidu等专业的搜索引擎工具,但是,由于所用搜索引擎的专业性,当我们搜索关键字后的结果往往又是包罗万象的,事实上这又不是我们想看到的结果。于是就想到能
7、否将搜索引擎的全文检索技术应用到图书馆的查询系统中?答案是肯定的。全文检索是指以文本为检索对象,允许用户以自然语言根据资料内容而不仅是外在特征来实现信息检索的手段。全面、准确和快速是衡量全文检索系统的关键指标。全文检索不仅可以实现对数据资料的外部特征的检索,诸如标题、作者、摘要、附录等,而且还能直接根据数据资料的内容进行检索,实现了支持多角度、多侧面地综合利用信息资源。最初的全文检索是通过在文本中逐个字符扫描匹配完成的,不需要全文索引这样的辅助数据。随着文本集越来越大,人们对全文检索的需求越来越多样,这种顺序比较效率低下的弊端就凸现出来。人们受到书目索引的启发提出了全文索引的思想,而本课题研究
8、的倒排索引则是目前应用最广泛的全文索引之一川。在搜索引擎实际的引用之中,有时需要按照关键字的某些值查找记录,所以我们是按照关键字建立索引,这个索引我们就称之为:倒排索引,而带有倒排索引的文件我们又称作:倒排索引文件,也可以叫它为:倒排文件。倒排文件中的次关键字索引我们称作:倒排表。其主要优点是:在处理复杂的多关键字查询时,可在倒排表中先完成查询的交、并等逻辑运算,得到结果后再对记录进行存取。这样不必对每个记录随机存取,把对记录的查询转换为地址集合的运算,从而提高查找速度!综上所述,全文检索技术是现代信息检索的一项重要技术,在数字图书馆等领域中都有广泛的应用价值,因此,研究和探索高效的倒排索引技
9、术不仅具有理论价值,而且极具商业前景。本文通过剖析开放源码的全文检索引擎Lucene,在将Lucene的索引与传统的数据库索引做全面的比较以及分析其组织架构后,实现了基于Lucene的图书馆辅助查询系统的设计。word文档可自由复制编辑第2章Lucene介绍最初的Lucene是使用Java语言编写的一个全文索引的工具包,支持多种操作系统。随着Lucene的逐渐发展,2001年Lueene成为apache基金会的一个子项目。并在日前推出使用C、Delphi等其它语言编写的版本。目前有很多Java项目使用Lucene作为其后台全文检索引擎,著名的有:Eclipse:功能强大的IDE工具,全文检索部
10、分使用Lucene;Jive: Web论坛系统;Conoon:基于XML的节Web发布框架,全文检索部分使用Lucene;Eyebrows:邮件列表HTM工归档/浏览/查询系统。2.1 Lucene的全文索引与数据库索引Lucene类似于一个支持全文检索的数据库系统。Lucene的结构设计类似于数据库的表、记录、字段。这样做的结果是设计思路非常清晰,同时保证数据检索高效性,绝大部分的数据都可以方便地映射到Lucene的存储结构接口中。Lucene的结构设计与数据库的设计极为相似,但Lucene的索引与数据库索引又有着极大的不同。Lucene索引与数据库索引区两者的相似与不同点如表2所示。表2-
11、1数据库检索和Lucene检索的相似和不同之处比较第Lucene枪*数据检索从Lue的索引文件中检霍,出符合条件的记录*川结构Documeot (文档 一个文档由多个6dd (城)组成Hi(命中结臬),由籽台关爰字条件的doewnem tfi成全文构案支持法数据陈富引(或含不需要置引)检索记录,出符合条件的记录Record (J)j 一个记录由多个field (字段)近成*结果集由包含关字的记录圾成无法进灯增量*X只能*引星不支持模糠直询支衿结果挎序便果结果按相似度排序不支持Q索皓果彳“技丽还港数据库的索引和Lucene的索引的建立都是为了提高提高查询速度,但数据库的索引的设计仅征对少数的字段
12、信息建立索引,而且对于数据量大且频繁的更新的系统极不适用,频繁的数据更新需要对数据索引进行重建,极大地增加了系统的开销。数据库的索引和Lucene的索引的建立都是为了提高提高查询速度,但数据库的索引建立的设计仅征对少数的字段信息建立索引,并非为全文检索设计,因此利用数据库的索引仅能根据己建索引的字段进行检索,无法实现全文索引。另外由于数据库索引的设计决定了数据库索引不支持如1汰c%关键字的模糊查询,因此在需要大量模糊查询的全文检索系统中,使用数据库索引显然是行不通的,而Lucene的索引设计一个高效的检索系统的关键是建立一个反向索引机制,将数据源排序顺序存储的同时,建立一个排好序的关联字列表,
13、用来储存关键字和记录的关系。并利用这样的映射来检索:关键字和记录编号的映射,关键字在记录中出现的次数、频率、位里的映射。建立这样的索引避免了在所有文章中搜索关键字的麻烦,大大提高了检索效率。Lucene的检索过程实际是把模糊查询变成多个可以利用索引进行精确查询的逻辑组合的过程。不需要很多的I/O操作,大大提高了多关键字检索的效率,支持多关键字间+、一、and、or等逻辑关系(类似Google),并通过复杂的映射过程进行相似度运算,使得检索结果与用户所需更加的匹配。2.2 Lucene的结构Lucene作为一个优秀的全文检索引攀,其系统结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引
14、文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统。以下将通过讨论Lucene的工具包中的结构组织,来讨论其结构和功能。Lucene软件包的发布形式是一个JAR文件,这个JAR文件包含4个主要的Java包:(1) org.apache.lucene.document:这个包提供了一些为封装要索引的文档所需要的类,比如Document, Fieldo这样,每一个文档最终被封装成了一个Document对象。(2)org.apa
15、che.lucene.analysis:这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。(3)org.叩ache.lucene.index:这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的:IndexWriter和IndexReader,其中IndexWriter是用来创建索引并添加文档到索引中的,IndexReader是用来删除索引中的文档的。(4)org.apache.lucene.search:这个包提供了对在建立好的索引上进行搜索所需要的类。比如IndexSearcher和Hits, Index-Searcher定义了在指定的索引上进行搜索的方法,Hits用来保存搜索得到的结果。2.3 本章小结本章对Lucene做了简单的介绍,主要是从两方面进行介绍的:一方面是从Lucene的全文索引与数据库索