




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计(论文)基于LUCENE的全文搜索学 院计算机学院 专 业 软件工程 年级班别 2010级(3)班 学 号 3110006358 学生姓名 王悦全 指导教师 孙为军 2014年5月摘 要随着互联网的普及,数据量的增大,搜索引擎对日常生活产生巨大的影响。如何从海量的数据中准确找到自己需要的信息成为现今重要的话题。搜索引擎解决了用户检索的难题。随着互联网的不断发展,搜索引擎成为现今上网的查找相关信息的必备工具。一般站点的各类信息都是存于数据库,再利用数据库的检索功能实现站点的搜索功能,但是随着数据量的剧增,使用数据库的模糊查询将导致检索功能的急剧性下降,而lucene搜索引擎的实现则可以避免这种问题。lucene正是这样一个开放源码的全文检索引擎工具包,可以在目标系统中实现全文检索的功能,甚至于建立起完整的全文索引引擎。本系统的设计主要是基于B/S模式的Java Web平台架构实现一个全文搜索引擎,本系统中使用MySQL作为底层数据库支持,采用lucene实现全文检索引擎辅以Highlight实现关键词的高亮显示。在搜索结果中,我使用了分页形式展示,这样就会显示得更加清晰。前台页面主要使用HTML及JQuery。系统主要包括以下功能:搜索功能、个人中心、热门搜索、上传推送、上传文档和用户管理。搜索功能是系统的核心,用户可以输入内容,然后系统会从上传的文档中找出与搜索词最相近的内容出来。本系统主要涉及两种身份,系统管理员和普通用户。系统管理员可以管理文档分类和用户,普通用户可以使用搜索和上传功能。关键字:lucene , mysql, html, 搜索引擎, java webAbstractWith the popularity of the Internet, increase the amount of data, search engines have a significant impact on daily life.How to accurately find they need from the vast amounts of data information has become an important topic today.Search engine to solve the problems of user retrieval.With the continuous development of the Internet, search engine becomes an essential tool for today on the Internet to find relevant information.General site of all kinds of information is stored in the database, using database retrieval function realizes the site search function, but with the amount of data, will lead to use the database query search function of a sharp decline, while the realization of the lucene search engine can avoid this problem.Lucene is an open source full-text search engine toolkit, can achieve full text search functions in the target system, and even set up a complete full text indexing engine.The design of this system is mainly based on B/S model of Java Web platform architecture to realize a full-text search engine, this system USES MySQL as the underlying database support, implemented using lucene full-text search engine with Highlight keywords highlighted.In the search results, I use the paging form, it will show more clearly.The front desk page mainly using HTML and JQuery.System mainly includes the following functions: search function, individual center, top search, upload the push, upload documents and user management.Search function is the core of the system, users can input, then system will upload document to find out the most similar content and the search term.This system mainly involves two kinds of identities, system administrators and ordinary users.System administrator can manage the document classification and users, ordinary users can use the search and upload function.Key words: lucene , mysql , html , Search engine , java web目 录1绪论11.1系统开发意义以及背景11.1.1 项目历史11.1.2 开发背景21.2预期目标22开发工具及开发技术42.1开发环境及主要工具42.1.1系统开发环境42.1.2系统开发工具42.2系统实现技术介绍42.2.1 java编程技术42.2.2 Mybatis介绍72.2.3 Lucene介绍82.2.4 Myeclipse 简介92.2.5 JQuery简介92.2.6 Power Designer103需求分析113.1需求陈述113.2模块结构关系113.3系统可行性分析123.3.1时间可行性123.3.2用户可行性123.3.3技术可行性123.4 系统用例图133.4.1 用户用例图133.4.2 管理员用例图134详细设计144.1整体结构设计144.2数据库设计154.2.1数据库环境说明154.2.2数据库命名说明164.2.3数据库物理设计164.2.4数据库概念结构设计164.2.5数据库逻辑结构设计194.3 主要功能模块设计234.3.1系统管理模块设计234.3.2 用户管理模块设计244.3.3 lucene索引搜索器设计254.4 系统代码架构264.5 界面设计285系统实现295.1总体包结构295.2对部分重要包的解释295.3 字典树的实现305.4 即时更新索引的实现326 测试与维护346.1测试定义及用例346.2 测试结果概述366.3界面设计376.3.1登录页面设计376.3.2 首页设计386.3.3 上传页面396.3.4 搜索页面396.4测试结果总结40总结与展望41参考文献42致谢431绪论1.1系统开发意义以及背景1.1.1 项目历史1990年,加拿大麦吉尔大学计算机学院的师生开发出Archie。当时,万维网还没有出现,人们通过FTP来共享交流资源。Archie能定期搜集并分析FTP服务器上的文件名信息,提供查找分别在各个FTP主机中的文件。用户必须输入精确的文件名进行搜索,Archie告诉用户哪个FTP服务器能下载该文件。虽然Archie搜集的信息资源不是网页(HTML文件),但和搜索引擎的基本工作方式是一样的:自动搜集信息资源、建立索引、提供检索服务。所以,Archie被公认为现代搜索引擎的鼻祖1996年,Larry Page和Sergey Brin创建一个叫做BackRub的搜索引擎,而这个搜索引擎后来叫做Google。自2000年以来,Google成为全球最大的搜索引擎,而今各搜索引擎林立,可见其对人们生活起到多大的作用。网络搜索引擎的出现从某种程度上解决了这个问题,它是目前比较有效的网上信息获取方法。目前,网上比较有影响的搜索工具中,中文的有:Google、百度(baidu)、雅虎(Yahoo)、搜狗(Sogou)等搜索引擎,英文的有:Google、Yahoo、AltaVista等。另外还有专用搜索引擎等。目前的商业搜索引擎,通常分为以下几种:(1) 通用搜索引擎,其组织方式主要有网络综合搜索引擎和网络主题资源搜索引擎两种。其中网络综合搜索引擎主要是采集互联网网站资源,提供给网络用户检索。(2) 垂直搜索,主要是针对某一行业的搜索引擎,采集信息时按行业过滤和分类。(3) 站内搜索,流行的方式有三种:基于数据库的搜索、基于Spider抓取的站内搜索、站内搜索软件系统。(4) 桌面搜索,主要是让用户快速的查找到存于计算机本地磁盘上的相关文档。在搜索技术中,主要是对信息的处理,既要考虑到信息的客观存在性,同时也要考虑到用户的行为的主观性,面对用户模糊的查询行为约束能否在海量数据中得到其所需要的信息一直推动着搜索引擎研究技术的发展。1.1.2 开发背景搜索引擎并不是真正搜索互联网,它搜索的实际上是预先整理好资料索引数据库。真正意义上的搜索引擎,通常指的是搜集了Internet上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面中包含了该关键词的网页都将作为搜索结果被搜出来 。在经过复杂的算法进行排序后,将这些结果按照与搜索关键词的相关度高低依次排列。Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源码的全文检索引擎工具包,是一个全文检索引擎的架构,提供完整的索引引擎和查询引擎。本系统将基于lucene工具包及相关的其他框架搭建一个小型的B/S结构的全文搜索,提高对搜索引擎技术的了解及应用。1.2预期目标1、建立索引及搜索根据用户上传的文件建立索引文件,然后提供接口给用户调用进行搜索。(1)用户可以选择上传word、txt、ppt、excel等格式的文件,系统会对这些文件进行分析,然后建立索引。(2)系统根据用户输入的信息进行查询,把结果反馈给用户。2、建立后台管理功能系统分为管理员和普通游客:两种身份都可以使用系统中最核心的搜索功能,但是管理员可以进行分类树的维护以及索引更新删除等。3、上传功能系统为每个用户提供了上传文档功能,在系统检查到上传成功后会弹出一个页面让用户选择该文档的分类,当选择分类成功后就会显示文档转为页面后的预览。4、推送功能当有其他用户上传文档成功后,系统会推送到其余用户。5、个人中心 每个用户都有自己的个人中心,这里可以查到用户上传的所有内容,用户也可以管理这些内容。个人中心还可以查询到用户最近的搜索情况。6、热门搜索 热门搜索是系统中一个统计功能,每到固定的时间,系统就会统计好最近的搜索数量,找出每种搜索最热门的。每个用户进入首页后,都可以看到这些内容。2 开发工具及开发技术2.1开发环境及主要工具2.1.1系统开发环境开发硬件环境:英特尔 第二代酷睿 i3-2310M 2.10GHz 双核,4G RAM,320G硬盘开发软件环境:Windows 7 旗舰版 64位 SP1 ( DirectX 11 )2.1.2系统开发工具开发语言:Java 1.7.x编程工具:Myeclipse 10.1数据库工具:MySQL开发框架:spring mvc 3.2.x、Spring3.2.x、Lucene 3.5 、mybatis3.2.x其他工具:Microsoft Office Excel、Start UML 10.5、Microsoft Visio 20032.2系统实现技术介绍2.2.1 java编程技术1、java简介Java语言是与平台无关的编程语言。它是一种简单的、面向对象的、分布式的、解释的、键壮的、安全的、结构的中立的、可移植的、性能很优异的、多线程的、动态的、语言1。Java自问世以后,以其编程简单、代码高效、可移植性强,很快受到了广大计算机编程人士的青睐。Java语言是Internet上具有革命性的编程语言,它具有强大的动画、多媒体和交互功能,他使World Web进入了一个全新的时代。Java语言与C+极为类似,可用它来创建安全的、可移植的、多线程的交互式程序。另外用Java开发出来的程序与平台无关,可在多种平台上运行2。2、J2EE简介J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。 J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,不仅巩固了标准版中的许多优点,例如编写一次、随处运行的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlets API、JS(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。3、JSP简介JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易出错。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览3。JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台Error! Reference source not found.JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点4。自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。4、Spring mvc 简介Spring为展现层提供了一个优秀的Web框架-Spring mvc。和众多其他Web框架一样,它基于MVC设计理念5。很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合。通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对象更改都有高度敏感性。而且,当多个视图依赖于同一个业务对象时是没有灵活性的。让我们来研究一下 MVC 如何解决这些问题6。MVC 是一种著名的设计模式,特别是在 Web 应用程序领域。模式全都是关于将包含业务数据的模块与显示模块的视图解耦的。这是怎样发生的?视图(例如,JSP 页面)怎样能够与其模型(例如,包含数据的 JavaBean)解耦?记得这句格言么?一个层次的重定向几乎可以解决计算机业中的所有问题。确实,在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器。控制器将接收请求,执行更新模型的操作,然后通知视图关于模型更改的消息。依赖于模型的状态并且依赖于请求的控制器可以决定要显示哪个视图。图2.1这种模式。Spring MVC 实现了即用的 MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。并且当向 MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供了通过简单的配置更改即可动态更改组件的灵活性。Spring MVC 为您提供了完全控制应用程序的各个方面的力量。Spring 的 Web MVC 模块是围绕 DispatcherServlet 而设计的。Dispatcher- Servlet 给处理程序分派请求,执行视图解析,并且处理语言环境和主题解析,此外还为上传文件提供支持。图2.1 MVC模型图2.2.2 Mybatis介绍MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。我们把Mybatis的功能架构分为三层:API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑7。2.2.3 Lucene介绍Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。apache软件基金会的网站使用了Lucene作为全文检索的引擎,IBM的开源软件eclipse的2.1版本中也采用了Lucene作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了Lucene。Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用8。 Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 ASF, License。同样,Lucene是目前非常流行的、免费的Java信息搜索(IR)库。其具有如下突出的优点: (1) 索引文件格式独立于应用平台,Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。 (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 (5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search)、分组查询等等。2.2.4 Myeclipse 简介MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。2.2.5 JQuery简介JQuery是继prototype之后又一个优秀的Javascrpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。jQuery独特的选择器、链式操作、事件处理机制和封装完善的Ajax都是其他JavaScript库望尘莫及的,概括起来,jQuery有以下优势: (1)量级, 压缩后只有30KB左右。(2)强大的选择器。(3)出色的DOM操作的封装。(4)可靠的事件处理机制。(5)完善的Ajax。(6)不污染顶级变量(7)出色的浏览器兼容性。(8)链式操作方式。(9)隐式迭代。(10)行为层与结构的分离。2.2.6 Power DesignerPower Designer是Sybase推出的主打数据库设计工具。致力于采用基于Entity-Relation的数据模型,分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义。物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。本系统采用Oracle数据库,所以使用Power Designer时就直接采用了物理数据模型PDM。Power Designer具有良好的操作界面,很容易处理数据库表之间的关系。其正向工程能生成SQL脚本从而能高效地构建修改数据库表。是项目开发数据库设计不可缺少的工具之一。Power Designer,业界排名第一的数据建模工具,使企业能够更容易地可视化,分析和处理元数据进行有效的企业信息架构。对企业架构还提供了一个模型驱动的方法,这有利于实施有效的信息和企业基础架构。它为企业带来了强大的分析,设计和数据管理技术。Power Designer,结合几个标准建模技术(UML,业务流程建模和市场领先的数据建模),以及领先的开发平台,如.NET、工作空间、PowerBuilder、Java和Eclipse,使用业务分析和正式的数据库设计的办法来解决企业。它能与60多个关系数据库管理系统协助工作。3 需求分析3.1需求陈述作为一个以功能为主系统,本系统的立足点不仅仅是技术开发层面,而是整个项目的一体化进程,管理人员可以通过系统设置文档类型,设置用户信息。普通用户可以使用该系统的搜索功能,这些会得到对应的内容。系统还可以记录下用户的搜索记录,用来自动生成小时榜,二十四小时榜,周榜,月榜。这些搜索有利于用户便于了解当前最热门的词语,热门的情况。当然,当有人开始上传内容的时候,服务器会推送上传内容给在线的每个用户。用户还可以查询自己的账号情况,对于自己上传的内容还可以下载查看等。针对管理员用户提供了添加分类等功能。3.2模块结构关系图3.1 系统总体模块结构关系图3.3系统可行性分析3.3.1时间可行性该系统于2012年2月底启动,3月中上旬收集相关资料。估计3月下旬完成概要设计,于4月份前完成详细设计和数据库设计,4月份和5月上旬进行编码及测试工作,5月份开始整理资料和编写论文,5月下旬答辩。时间比较充分,所以在时间上是可行的。3.3.2用户可行性该系统的用户多为普通用户,没有专业训练,所以在交互方面我要做的更加人性化。从设计上我都会征询非计算机的同学对功能的需求,然后综合起来,得出一套比较符合他们的设计。系统拥有很多提示功能,就是用户出现任何错误的时候,系统都会出现一些提醒,告诉用户该如何去正确使用。进过一段时间的开发,得出一套操作方便的系统,所以在用户可行性上也是可行的。3.3.3技术可行性系统使用的主要是lucene技术,这套技术已经有多年的历史了,所以很完善,尤其是资料很丰富。当出现问题时候,去一些论坛上查找,都能很快找到一些解决的方法。当然里面有一些算法要我自己去设计,这个我也是先去论坛找一些类似的算法研究,然后开发出适用的一套算法。系统的界面开发,里面有使用到jquery的ui,这样页面上的设计业更加简单很多,总而言之,技术上是没有问题的。3.4 系统用例图3.4.1 用户用例图用户用例图如图3.2所示:图3.2 用户用例图3.4.2 管理员用例图管理员用例图如图3.3所示:图3.3 管理员用例图4详细设计4.1整体结构设计1、系统结构设计。由前面的概要设计可知,本系统由V层开始,转接到C层,在C层工作前,应对用户权限进行拦截,故而还要经过拦截层,C层匹配请求路径后将数据传递给M层处理。其中,M层主要分Action层、Service层和Dao层,M层处理完后再将数据通过C层传递给V层。具体的层次结构设计如下序列图所示9。图4.1 序列图2、Dao层设计为了方便和重用数据的持久操作,本系统抽离出Dao(数据持久化)层。该层主要设计为封装对数据库基本表的基本操作。由于每个Dao都具有高度的相似,所以抽离出基本的Dao接口,取名为BaseDao。基本Dao实现类拥有Spring的持久化模板HibernateTemplate,由系统初始化的时候交给Spring进行配置和注入。BaseDao提供泛型继承,这样就能使子类操作具体的POJO(实体类)而不用再进行类型转换。每个具体的Dao都是操作某一个POJO,与之一一对应,由于BaseDao提供了基本的增删查改操作代码,故基本实现子类Dao并不需要去完成,可以保留代码的整洁,若有复杂的查询或其他操作可在子类中另外做具体的实现。例如,数据库存在某张表TD_USER_INFO,则存在某个实体类TdUserInfo,则有相应的TdUserInfoDao为其持久化操作接口,实现类为TdUserInfoDaoImpl。其中,TdUserInfoDao继承了BaseDao,TdUserInfoDaoImpl继承了BaseDaoImpl,其设计的类图模型如下图所示。图4.2 Dao层设计类图4.2数据库设计4.2.1数据库环境说明数据库系统:MySQL数据库系统设计工具:Power Designer 15编程语言:SQL4.2.2数据库命名说明本系统关于search信息的以search_为前缀,其他以表的含义命名,当两张表有关联时以两种表名和为一起命名如user_project表。4.2.3数据库物理设计数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等。确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,因此需要进行权衡,选择一个折中方案。在本系统中综合考虑系统将来的运行效率和数据的吞吐量。其所处理的数据量是有限的,处理更多的数据之间的逻辑关系。因此准备采用集中式的数据库结构。4.2.4数据库概念结构设计概念结构是对现实世界的一种抽象。所谓抽象是对实际的人,物,事和概念进行认为的处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。下面列举本系统主要的数据库表概念结构设计,其他系统信息表概念设计可以参考数据库文件。1、用户信息表概念设计图4.3 用户信息表概念设计2、节点表概念设计图4.4 用户信息表概念设计3、热门搜索类型表概念设计图4.5 热门搜索类型表概念设计4、热门搜索排名表概念设计图4.6 热门搜索排名表概念设计5、文档信息表概念设计图4.7 文档信息表概念设计4.2.5数据库逻辑结构设计本系统共有数据库表20张,分别说明如下,设计参考了一些书籍10:表4.1项目流程数据库序号表名称中文别名功能1hotSearchType热门搜索类型用来统计热门搜索类型的2hotSearchRank热门搜索排名把热门搜索的内容保存进来3fileInfo文件信息上传文件的信息表4User用户表保存用户信息5Tree树表保存分类树以下是每个表的具体设计:1、 hotSearchType表表4.2 热门搜索类型表字段代码类型非空主键唯一默认主键IdidIntYY分类typetypeIntYNN创建时间createDatedatetimeNNN格式ormatVarchar(50)NNN2、hotSearchRank表表4.3 热门搜索排名表字段代码类型非空主键唯一默认主键idintYY属性hotSearchIdintNNN搜索内容contentVarchar(50)NNN搜索次数countintNNN排名RankIntNNN3、fileInfo表表4.4 文档信息表字段代码类型非空主键唯一默认主键idintYY用户iduserIdintNNY用户名userNameVARCHAR(50)NNN文件名fileNameVARCHAR(50)NNN文件标题titleVARCHAR(50)NNN文件类型fileTypeVARCHAR(50)YNN上传时间unloadTimeDATETIMEYNN下载次数downloadCountIntYNN描述descriptionVARCHAR(50)YNN分类idclassidIntNNN分类名calssnameVARCHAR(50)NNN文件md5md5VARCHAR(50)NNN4、Tree表表4.5 节点表字段代码类型非空主键唯一默认主键idintYY节点名称nodenameVARCHAR(50)YNN备注remarkVARCHAR(50)NNN父节点idparentidIntNNN路径pathidVARCHAR(50)NNN是否为父节点isparentVARCHAR(50)NNN5、User表表4.6 用户信息表字段代码类型非空主键唯一默认主键idintYY用户名userNameVARCHAR(50)NNN密码passwordVARCHAR(50)YNY曾用名nicknameVARCHAR(50)YYY总下载次数downloadcountIntNNN积分integralIntNNN文件数documentcountIntNNN职业occupationVARCHAR(50)NNN最近上传文件recuploadname1VARCHAR(50)NNN最近上传idrecuploadid1IntNNN最近上传文件Recuploadname2VARCHAR(50)NNN最近上传idrecuploadid1IntNNN照片路径imgpathVARCHAR(50)NNN用户类型typeIntNNN4.3 主要功能模块设计4.3.1系统管理模块设计1、模块功能结构设计(1)搜索功能:在输入框中输入要搜索内容,然后就会弹出新页面显示搜索结果(2)个人中心:在个人中心可以查看自己上传里哪些文档,然后修改这些文档的状态(3)热门搜索:定时去统计这些搜索,然后可以让用户知道这段时间我们都搜索了哪些内容(4)上传推送:当有其他用户进行上传的时候,就可以推送到其他用户(5)上传文档:每个用户都可以上传自己的文档,但是不能重复(6)分类管理:对上传内容进行分类(7)用户管理:管理员可以对用户进行管理,包括用户的使用权2、系统权限设计系统主要包括普通用户和管理员,普通用户拥有上传查询等功能,管理员可以管理文档和普通用户3、系统参数设计系统中有分类树,里面包括了一些文档分类。分类内容比较多,但是里面所有的内容都是由管理员来定,也就是说有哪些分类都是系统里面可以改,而不是固定了的。4.3.2 用户管理模块设计1、个人中心的查询每个用户可以再个人中心处查找自己上传的文档,然后管理这些文档。2、重置用户密码每个用户都可以修改密码,找回密码等3、用户状态变更与历史查询管理员可以变更用户的状态,用户状态有三种:注销、冻结和正常。注销的用户不允许登录系统进行操作,冻结的用户只允许一些简单的查询操作,正常的用户能照常访问前台系统。用户状态每次被变更都会进行记录,可以在用户状态历史查询中查询出来。变更用户状态流程如下图所示。图4.8 用户状态变更流程4.3.3 lucene索引搜索器设计这里主要是介于lucene检索工具包的支持,lucene提供了从索引建立到搜索的一系列工具,极其方便开发者搭建一个索引的建立及搜索的框架。关于索引的核心类主要有以下几类:IndexWriter 负责创建新索引或者打开已有索引,以及向索引中添加、删除或更新被索引文档的信息。Directory 负责具体指定索引的存储路径。Analyzer 负责从被索引文本文件中提取语汇单元,并提出剩下的无用信息。Document 代表一些域(Field)的集合。Field 索引中的每个文档都包含一个或多个不同命名的域,这些域包含在Field类中。关于本索引器的创建主要是依赖于Spring的注入,通过配置文件的配置,及相应的分词器来创建索引。搜索器的设计,除却lucene本身的搜索器外,还配置lucene下的Highlight(高亮)显示,Highlight具有两个比较普片的工能,截词与高亮显示。关于搜索过程的核心类主要有以下几种:IndexSearcher 用于搜索由IndexWriter类创建的索引。Term 搜索功能的基本单元,与Field对象相似。Query 查询类。TermQuery lucene提供的最基本的查询类型。TopDocs 一个简单的指针容器,指针一般指向前N个排名的搜索结果,搜索结果即匹配查询条件的文档。在本设计中,Searcher的设计也是通过Spring的配置文件来取得分词器来查询索引的。4.4 系统代码架构本系统代码设计的原则在概要设计中已给出,代码设计分层跳转设计在本章系统层次结构设计中已给出,由于代码量大,这里不陈列出来。整个系统分为3层架构,即MVC模式。由于使用的是MyEclipse开发,根据该IDE特点,整个系 1、统设计后的代码的总体架构如下图所示图4.9 项目总体代码架构设计整个项目的层次架构由上图可以有一个清晰的预览。经过编译器编译后,src目录下的java文件将会被编译为class文件,存放与WEB-INF下面的class文件夹的相应位置中。2、后台代码架构设计后台代码,即为java代码和一些spring注入配置信息的xml文件组成的代码。不同于业务上的前后台之分,所谓的后台代码,是指主要涉及系统业务的处理和数据的持久化的代码。该部分是整个系统的核心部分,本系统指存放在src下的代码。为避免代码混乱和逻辑混乱,应该对整个后台代码的分包分层有一个总体的设计,在本系统中,后台代码架构的设计如图所示。图4.10 后台代码架构设计3、前台代码架构设计图4.11 前台代码架构设计4.5 界面设计本系统界面设计采用经典HTML+CSS布局管理,主要有三个页面的设计:前台用户使用界面,后台管理员登录界面和后台管理界面。主要设计为前后台操作界面的设计,考虑两种不同的使用人群,两种界面用两种不同的布局管理。5系统实现5.1总体包结构系统总体包结构如图5.1所示:图5.1 总体包结构图5.2对部分重要包的解释1、工具包:FileUtil.java 包括对文件的上传下载HotSearchRankUtil.java 热门搜索工具包IndexUtil.java 索引公共包JacobUtil.java 使用了jacob包,对上传内容进行解析MinHeap.java 小顶堆排序MyTrieTreeForRank.java 使用单例模式,对热门搜索进行排序选择SingleNRTManagerUtil.java 使用单例模式,完成即时更新索引2、配置文件perties 配置文件,包括数据库等perties 开启deguer模式,可以更加详细显示错误mybatis-config.xml :mybatis的配置文件mybatis-spring.xml:mybatis和spring的整合spring-mvc.xml: spring mvc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牛津6年级期末数学试卷
- 清华强基计划数学试卷
- 华夏盛典营销活动策划方案(3篇)
- 门店施工方案范本(3篇)
- 农村小型鱼池施工方案(3篇)
- 海南景区喷泉施工方案(3篇)
- 美式小区施工方案(3篇)
- 北京市昌平区2024-2025学年八年级下学期第一次月考历史题库及答案
- 安徽省六安市金安区2023-2024学年高二上学期第二次月考生物考点及答案
- 心动传媒面试题目及答案
- 余华《活着》人物介绍
- 电梯型式试验规则
- 教师法治素养提升专题讲座
- 广西2025年初中学业水平考试英语真题(含答案及听力音频听力原文)
- 财务给研发培训课件
- 2025至2030中国汽车空调压缩机行业产业运行态势及投资规划深度研究报告
- 2025年人工流产并发症及其护理试题
- 婴幼儿托育服务与管理专业职业生涯规划
- 2025至2030年中国自动化生产线行业市场运行态势及未来发展潜力报告
- 新能源汽车维护与故障诊断课件
- 2025年中考冲刺模拟数学(云南卷)(考试版A3)
评论
0/150
提交评论