毕业设计(论文)-搜索引擎的系统体系结构的研究与应用.doc_第1页
毕业设计(论文)-搜索引擎的系统体系结构的研究与应用.doc_第2页
毕业设计(论文)-搜索引擎的系统体系结构的研究与应用.doc_第3页
毕业设计(论文)-搜索引擎的系统体系结构的研究与应用.doc_第4页
毕业设计(论文)-搜索引擎的系统体系结构的研究与应用.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古工业大学本科毕业设计说明书学校代码: 10128学 号: 本科毕业设计说明书(题 目:搜索引擎的系统体系结构的研究与应用学生姓名:学 院:信息工程学院系 别:计算机系专 业:计算机科学与技术班 级:指导教师:摘 要近年来,互联网上的信息呈几何级数爆炸性增长,丰富多彩的网络资源给人们的生活工作以及学习带来巨大方便的同时,信息的浩繁,庞杂无序和动态性又极大地影响了用户获取信息的速度,准确性和有效性。海量的存贮和科学的信息搜索是用户信息行为中两种重要的能力,互联网的发展已经实现了信息的海量存贮,为了解决大海捞针似的信息搜索问题,搜索引擎便应运而生了。目前搜索引擎技术已成为计算机工业界和学术界争相研究和开发的热点技术。对于实现网络信息的海量搜索,搜索引擎的体系结构设计成为提高搜索效率的关键。本文中所设计的搜索引擎,主要有四个大的模块组成:一是抓取模块:实现了对网页信息的下载。二是索引模块:实现了对网页信息的排序,索引。三是搜索模块:实现了对网页信息的快速检索。四是用户接口:实现了系统的前台操作。本系统是对网站数据及相关数据库数据进行搜索,管理配置了对应数据源和搜索途径,实现了对网络信息的快速搜索。关键词:搜索引擎;体系结构;索引全套设计加扣 3012250582AbstractInformation on the internet grows geometrically and explosively in recent years. Diversified resources of network brought great convenience to peoples life. At the same time, the voluminous of information, and the dynamic and mixed disorganization also greatly affect the speed,the accuracy,and the effectiveness of accessing to information. Massive storage and searching of scientific information is two important capacity of information act. The development of the internet has achieved the storage of a mass of information. The search engine will come into being in order to solve the problem of searching information. At present,technology of search engine has become the hot technology of researching and developing in computer industry and academia. For the achievement of massive searching of network information, designing of search engine architecture becomes the key of improving the efficiency of the search. The designing of search engines in this paper composed by four major modules. First is crawling modules: Implementation of the download page of information. The second is indexing modules: the search engine and data sources connected to the establishment, modification and removal. Third, the indexing module: to achieve the rapid indexing of network information. Fourth, the search modules: it realized the rapid retrieval of information pages. This system is to search the site of data and data related to the database and management configuration of the corresponding data sources and it realizes rapid research of network information.Keywords: Search engine; Architecture; Index目 录引 言1第一章 搜索引擎的系统结构21.1 结构概述21.2 搜索引擎的的构成21.2.1 网络机器人21.2.2 索引与搜索21.2.3 Web服务器21.3 搜索引擎的主要指标及分析2第二章 系统设计的相关知识介绍42.1 Lucene2.0简介42.1.1 Lucene2.0的原理42.1.2 Lucene2.0的优越性42.2 JSP简介52.2.1 JSP的运作模式52.2.2 JSP的优点52.3 JDBC简介6第三章 系统需求分析83.1 编写目的83.2 项目背景83.3 任务概述83.3.1 目标83.3.2 运行环境83.4 系统功能需求83.4.1 网页抓取模块93.4.2 索引模块93.4.3 搜索93.4.4 用户接口模块10第四章 系统详细设计114.1 数据库设计114.1.1 数据库需求分析114.1.2 数据字典114.2 系统设计124.2.1 网页抓取124.2.2 建立索引134.2.3 搜索144.2.4 前台设计15第五章 系统的实现165.1 系统的实现165.2 搜索测试175.2.1 域名搜索测试175.2.2 页面索引测试185.3 重建数据库功能20结 论21参考文献22谢 辞23引 言信息技术的不断发展,特别是互联网应用的迅速普及,深入到了人们生活的各个方面,改变了人们生活方式和思维方式,方便了全球信息资源共享。全球目前的网页超过100亿,每天新增加数百万网页,电子信息爆炸似的丰富起来。要在如此浩瀚的海洋里寻找信息,就像“大海捞针”一样。能有一种工具使我们可以在不到1秒钟的时间就迅速找到我们想要的内容吗?答案是“有”,这就是搜索引擎。今天,搜索引擎已成为人们在网络信息海洋中自如冲浪必不可少的利器。 搜索引擎是对WWW(World Wide Web)站点的信息资源进行标引和检索的系统,主要负责组织信息和根据需要提供信息,被人们誉为“网络门户”。但不论使用哪种搜索引擎,查准率、查全率和响应时间都是用户最关心的基本问题。然而,目前还没有一种搜索引擎能覆盖因特网全部资源,即使功能最完善的搜索引擎也只能找到Web上大约1/3的网页,查全率也无法保证。另一方面,由于网络资源的海量、繁杂无序、网页的无效链接、查询结果重复等问题,都大大降低了搜索引擎的查准率。因而如何优化搜索引擎成为人们研究的热点。对于优化搜索引擎,其系统体系结构的设计是搜索引擎优化成功的关键。本系统实现了一个简单的全文搜索引擎,针对搜索引擎的系统体系结构作了初步的研究。第一章 搜索引擎的系统结构1.1 结构概述搜索引擎又称检索引擎或查询引擎。它能够通过Internet接收到用户的查询请求,再以一定的方法在互联网中搜索信息,对信息进行理解、提取、组织和整合,并为用户提供检索服务,从而起到信息导航的作用。为了保证用户查找信息的精度和新鲜度,搜索引擎需要建立并维护一个庞大的索引数据库。一般的搜索引擎由网络机器人程序、索引与搜索程序、索引数据库等部分组成。1.2 搜索引擎的的构成1.2.1 网络机器人网络机器人也称为“网络蜘蛛”(Spider),是一个功能很强的WEB扫描程序。它可以在扫描Web页面的同时检索其内的超链接并加入扫描队列等待以后扫描。因为Web中广泛使用超链接,所以一个Spider程序理论上可以访问整个Web页面。它从一个简单的Web页面上开始执行,然后通过其超链接再访问其他页面,如此反复扫描互联网上的所有页面。网络机器人还可以通过扫描Web站点的主页来得到这个站点的文件清单和层次机构,也可以扫描出中断的超链接和拼写错误等。为了保证网络机器人遍历信息的广度和深度需要设定一些重要的链接并制定相关的扫描策略。1.2.2 索引与搜索网络机器人将遍历得到的页面存放在临时数据库中,如果通过SQL语句直接查询信息速度将会难以忍受。为了提高检索效率,需要建立索引,按照倒排文件的格式存放。如果索引不及时更新的话,用户用搜索引擎也不能检索到要搜索的内容。用户输入搜索条件后搜索程序将通过索引数据库进行检索然后把符合查询要求的数据按照一定的策略进行分级排列并且返回给用户。1.2.3 Web服务器客户一般通过浏览器进行查询,这就需要系统提供Web服务器并且与索引数据库进行连接。客户在浏览器中输入查询条件,Web服务器接收到客户的查询条件后在索引数据库中进行查询、排列然后返回给客户端。1.3 搜索引擎的主要指标及分析搜索引擎的主要指标有响应时间、召回率、准确率、相关度等。这些指标决定了搜索引擎的技术指标。搜索引擎的技术指标决定了搜索引擎的评价指标。好的搜索引擎应该是具有较快的反应速度和高召回率、准确率的,当然这些都需要搜索引擎技术指标来保障。召回率:一次搜索结果中符合用户要求的数目与用户查询相关信息的总数之比。 准确率:一次搜索结果中符合用户要求的数目与该次搜索结果总数之比。相关度:用户查询与搜索结果之间相似度的一种度量。精确度:对搜索结果的排序分级能力和对垃圾网页的抗干扰能力。第二章 系统设计的相关知识介绍2.1 Lucene2.0简介Lucene是一个高性能、可伸缩的信息搜索库。它使你可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的成熟的、免费的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于在Apache软件许可。同样,Lucene是当前与近几年内非常流行的免费的Java信息搜索库。Lucene最初是由Doug Cutting开发的在SourceForge的网站上提供下载。在2001年9月做高质量的开源Java产品加入到Apache软件基金会的Jakarta家族中。2.1.1 Lucene2.0的原理Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索应用程序。它本身只关注文本的索引和搜索,并且这些事它完成的非常好。Lucene使得应用程序只针对它的问题域来处理业务规则,而把复杂的索引和搜索实现隐藏在一组简单易用的API之后。Lucene可以索引并能使得可以转换成文本格式的任何数据能够被搜索。它并不关心数据的来源、格式甚至它的语言,只要能将它转换为文本。这就意味着我们可以经索引并搜索存放于文件中的数据。2.1.2 Lucene2.0的优越性Lucene是一个Java库,它并不限定索引和搜索的内容。它可以为应用程序添加索引和搜索能力。Lucene提供了一组简单却足够强大的核心API,只需要最小限度地理解全文索引和搜索。并且利用Lucene可以索引存放于数据库中的数据,提供给用户很多数据库没有提供的全文搜索的能力。一旦集成了Lucene,应用程序的用户就能够像这样来搜索:+George +Rice -eat -pudding,Apple -pie +Tiger,animal:monkey AND food:banana等等。利用Lucene,可以索引和搜索email邮件,邮件列表档案,即时聊天记录,你的Wiki页面等等。 这使得它比其它一些搜索程序更有优势 。Lucene作为一个全文检索引擎,其具有如下突出的优点:(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询、分组查询等等。2.2 JSP简介JSP(Java ServerPages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,在传统的网页HTML文件(*.htm,*html)中加入java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。web服务器在遇到发送访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送Email等等。这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无JavaApplet,甚至无Frame。使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果。2.2.1 JSP的运作模式JSP能在webServer(尤其是JSWDK)端整合Java语言至HTML网页的环境中,然后利用HTML网页内含的Java程序代码取代原有的CGI、ISAPI或者IDC的程序,以便执行原有CGI/WinCGI、ISAPI的功能。对应于Client端(指的是浏览器端的HTML文件)内嵌的描述语言,Sun公司提供的JSWDK-1.0.1也支持类似的描述语言,它便是Java语言。由于JSP放置在Web务器上,它在解析使用者由表单(From)传送过来的字段数据后,接着通过适当的逻辑生成标准HTML文件,然后传给客户端。2.2.2 JSP的优点Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求而变化的,例如请求账户信息或者特定的一瓶酒的价格),其生成内容的逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件、使用JDBCTM技术访问数据库等),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者既保护自己的代码,又保证任何基于HTML的Web浏览器的完全可用性。绝大多数JSP页面依赖于可重用的、跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。Web页面开发人员不会都是熟悉脚本语言的编程人员。Java Server Pages技术封装了许多功能,这些功能是在生成易用的、与JSP相关的XML标识的动态内容时所需要的。标准的JSP标识能够访问和实例化JavaBeans组件、设置或者检索组件属性、下载Applet,以及执行用其他方法更难于编码和耗时的功能。通过开发定制标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用如同标识一样的工具来执行特定功能的构件。JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java (企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处执行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,可以使用自己所选择的服务器和工具,而且更改工具或服务器并不影响当前的应用。2.3 JDBC简介JDBC常被认为是代表“Java数据库连接(Java Database Connectivity)”。它由一组用Java编程语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。 有了JDBC,向各种关系数据库发送SQL语句就是一件很容易的事。换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,为访问Informix数据库又写另一个程序,等等。您只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL语句。而且,使用Java编程语言编写的应用程序,就无须去考虑要为不同的平台编写不同的应用程序。将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。Java具有坚固、安全、易于使用、易于理解和从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是Java应用程序与各种不同数据库之间进行对话的方法。而JDBC正是作为此种用途的机制。JDBC扩展了Java的功能。例如,用Java和JDBCAPI可以发布含有applet的网页,而该applet使用的信息可能来自远程数据库。企业也可以用JDBC通过Internet将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Macintosh和UNIX等各种不同的操作系统)。随着越来越多的程序员开始使用Java编程语言,对从Java中便捷地访问数据库的要求也在日益增加。第三章 系统需求分析3.1 编写目的为了更好的设计这个课题,在实施工作之前编写了需求分析,在一个真正的软件开发过程中需求分析是不可缺少的重要一个环节,它充分反映客户的需求,以便编程人员可以方便了解客户的要求,做出符合客户要求的软件系统。为了在本次系统设计中具有规范性和合理性的设计和编写代码,尽量的少走弯路,达到预期的效果而必须做需求分析。3.2 项目背景互联网发展的今天,一方面离不开其开放、共享的特性带给人们的全新体验,另一方面也离不开数以亿计的为其提供各类丰富内容的网络节点。互联网被普及前,人们查阅资料第一想到的便是拥有大量书籍资料的图书馆,到了今天,很多人都会选择一种更方便、快捷、全面、准确的方式使用搜索引擎。3.3 任务概述3.3.1 目标本系统是为了满足有对信息快速搜索的需求,通过对搜索引擎系统体系结构的优化,实现对网站数据及相关数据库的数据搜索,完成海量信息的有效搜索。3.3.2 运行环境操作系统:Linux 操作系统。软件环境:Myeclipse,Oracle,Tomcat。3.4 系统功能需求经过调研和分析,本文中所设计的搜索引擎,主要有四个大的模块组成:一是抓取模块:实现了对网页信息的下载。二是索引模块:实现了对网页信息的排序,索引。三是搜索模块:实现了对网页信息的快速检索。四是用户接口模块:实现系统的前台操作。如图3-1所示为系统的功能模块图搜索引擎网页抓取搜索索引用户访问界面删除索引搜索索引文件用户接口选取种子结点建立索引返回搜索结果解析网页图3-1 总体功能模块图3.4.1 网页抓取模块本模块的功能是通过选取的种子结点,解析相对应的网页标签的信息,并将相关信息保存到数据库中。网络蜘蛛是从一个网页迁移到另一个网页,所以必须找到该页面上的超链接。搜索引擎建立索引, 处理的对象是文本文件。而对于网络蜘蛛来说, 抓取下来网页包括各种格式, 如html、图片、多媒体、动态网页及其它格式等。这些文件抓取下来后, 需要对这些文件进行解析把文件中的文本信息提取出来通过解析网页的HTML代码,查找该页面内的超链接然后通过递归或非递归两种结构来实现Spider程序。本系统中是通过网页的链接地址来寻找网页,并对网页内容进行提取。3.4.2 索引模块建立索引模块是对数据库中的url和提取的网页的信息建立索引的功能,在建立索引文件时由于考虑到内存,CPU处理速度等因素,决定采用复合索引的形式对文本信息建立索引,以减少内存的消耗。将其产生的索引文件存放到指定的目录下,以便搜索的时候直接按照索引进行快速查询,在模块中主要是使用了Lucene的索引优化和JE的分词技术。通过复合索引的方式,将每个Document产生的索引文件合并成为一个索引文件,以减少对内存的占用。3.4.3 搜索实现这一模块是通过使用IndexSearcher这个类,对索引进行查找。先将用户输入的关键字利用分词器进行解析,再将解析后的关键字与索引文件中的文本信息进行匹配,搜索与关键字相关联的信息。3.4.4 用户接口模块在该模块中,主要就是用户界面的设计和搜索结果的显示。当用户输入要查询的关键字时,系统就会根据关键字去索引文件中查找相应的信息,返回给用户。第四章 系统详细设计4.1 数据库设计4.1.1 数据库需求分析搜索引擎的结构主要由抓取网页、索引、搜索这几部分组成,而抓取网页主要通过它的url进行抓取,这就需要对url进行存储。所以系统中需要存放url的数据表。本系统所处理的数据流程图如图4-1所示:url数据库搜集器索引器检索器用户接口用户www图4-1 数据流层图4.1.2 数据字典()search_local表:该表用于存放抓取到的当前url信息。表-1 search_local字段字段名类型宽度说明 1编号int型5Not null(primary key)2url字符型250默认null3CreateDate字符型2554visite字符型1只有”Y”与”N”两种取值()search_pre表:该表用于存放抓取到的当前url信息所链接的url地址。表4-2 search_pre 数据表字段字段名类型宽度说明1编号int型5Not null(primary key)2url字符型250默认null3CreateDate字符型2554visite字符型1只有”Y”与”N”两种取值() search_url表:该表用于存放在本机的网页的url。表4-3 search_url字段字段名类型宽度说明1idint型5自动增长2url字符型2503title字符型2504.2 系统设计本系统是借助Lucene这个全文搜索工具实现的一个简单的搜索引擎,它是由网络蜘蛛、索引、搜索和用户接口这几个功能模块组成。搜索引擎的前台操作由用户接口这个模块实现。在后台操作中,对于网络资源的搜索是先从网络上抓取网页,然后将抓取到的网页url存到数据库中;利用Lucene为数据库中保存的url建立相应的索引,并根据索引进行搜索;并根据后台设置的搜索测试对域名和关键字测试。4.2.1 网页抓取该模块主要是通过网页的链接地址来寻找网页,并对网页内容进行提取。搜索引擎建立索引, 处理的对象是文本文件。所以用Parser对网页进行解析,访问网页的根节点,使用NodeFilter将网页的Link节点过滤出来,并获取其节点内的元素。将获取到的相关信息存放于数据库中。而对于搜索本地的资源,不需要通过网页的链接地址来寻找网页,它在实现时只需要对存放于本机的网页进行解析,通过NodeFilter将网页中存放标题和内容的节点过滤出来,并提取其中的文本信息。开始选取网站过滤Link结点解析标签结点是否存储结束图4-2 网页抓取流程图4.2.2 建立索引该模块实现对数据库中的url及相关信息建立索引的功能,这一功能的实现是通过Lucene来完成的。在Lucene中任何与索引文档相关的操作,都是在Document和Field的基础上完成的。Field类是用来标识当前数据源的各种属性,存储来自数据源的数据内容。Document代表一种逻辑文件,是负责收集数据源。首先将解析网页所得的文本信息存放在Field中,再将Field加入到Document中。最后使用IndexWriter对索引进行创建,加入Document,合并各种索引段,完成对文件的索引。并将其产生的索引文件存放到指定的目录下,以便搜索的时候直接按照索引进行快速查询,提高搜索效率。开始读取文件路径封装文本信息利用IndexWriter创建索引优化索引Field结束图4-3 索引流程图4.2.3 搜索实现这一模块是通过使用IndexSearher这个类,对索引进行查找。先将用户输入的关键字利用分词器进行解析,再将其与索引文件中的文本信息进行匹配,在检索索引文件时,需要利用IndexReader这个类读取索引文件。IndexReader.open(filepath)来打开filePath路径下的索引文件,用IndexSearcher对象从指定路径下进行搜索;以下代码实现对输入查询条件进行解析处理:QueryParser parser = new QueryParser(content,new StandardAnalyzer();然后通过searcher.search(query)对返回的Hits对象进行处理。这个Hits对象提供了访问搜索结果的有效方法。一个使用hits.length()则可以得到相应结果的个数。Hits类对少数文档进行了缓存并保留了最近使用过的文档,Lucene会自动检测出前100个文档并将其置入缓存。开始初始化IndexSearher构建词条构建Query对象检索索引文件结束图4-4 搜索流程图4.2.4 前台设计前台的设计是由Jsp页面和HTML页面、包括相应的标签库、XML文档组成。它负责调用相应的业务逻辑层,对用户输入的关键字进行查询,并显示出相应的结果。第五章 系统的实现5.1 系统的实现 系统主界面:用户通过访问这个界面查询其所要搜索的内容。图5-1 系统主界面图查询结果界面:用户的查询结果在这个页面中显示,并且搜索的记录数和搜索时间也可以在这个页面显示。图5-2 搜索结果图5.2 搜索测试5.2.1 域名搜索测试这里根据存放在指定路径下的索引文件进行域名搜索,测试所要求的url是否已经抓取到并存到数据库中。主要代码如下:/读取索引文件IndexReader reader = IndexReader.open(filepath);Searcher searcher = new IndexSearcher(reader);String content = URL;QueryParser parser = new QueryParser(content,new StandardAnalyzer();/解析关键字Query query = parser.parse(queryString);System.out.println(Searching for: + query.toString(content);/搜索查询到的结果hits = searcher.search(query);IndexReader这个类主要用来读取索引文件。IndexReader.open(filepath)来打开filePath路径下的索引文件,用IndexSearcher对象从指定路径下进行搜索;以下代码实现对输入查询条件进行解析处理:QueryParser parser = new QueryParser(content,new StandardAnalyzer();然后通过searcher.search(query)对返回的Hits对象进行处理。显示结果如图5-3所示。图 5-3 域名测试图在这里可以实现对索引的更新和删除。由于Lucene不提供update(Docuement)方法,为了达到更新的目的,必须首先从一个索引中删除待更新的文档,然后将修改过的文档重新添加到索引中。5.2.2 页面索引测试这里根据存放在指定路径下的索引文件进行页面搜索,测试是否将url指定的页面内容抓取到,并将搜索记录写入日志文件。主要代码如下:/读取索引文件IndexReader reader = IndexReader.open(filepath);Searcher searcher = new IndexSearcher(reader);String content = contents;/构造QueryParser的对象在content域中进行搜索QueryParser parser=new QueryParser(content,new StandardAnalyzer(); parser.setDefaultOperator(QueryParser.AND_OPERATOR);Query query = parser.parse(queryString); /将查询记录存入文件FileWriter fw=new FileWriter(path,true);fw.append(new Date()+n);fw.append(Searching for: + query.toString(content)+n);/搜索查询到的结果hits = searcher.search(query);本功能的实现是用IndexReader.open(filepath)来打开filePath路径下的索引文件,用IndexSearcher对象从指定路径下进行搜索;再使用QueryParser这个类对用户输入的关键字进行解析,在解析时使用与建立索引时相同的分词器,否则关键字将无法与索引文件中的文本信息进行匹配查询。以下代码实现对输入查询条件进行解析处理:QueryParser parser = new QueryParser(content,new StandardAnalyzer();然后通过searcher.search(query)对返回的Hits对象进行处理,并将搜索记录写入日志文件。显示结果如下图5-4所示。图5-4 页面测试图5.3 重建数据库功能在帮助信息这个界面中,当创建的索引无法查询出来任何内容的时候,而且用户没有对其进行备份,那么就可以通过将数据库中的内容全部删除并重新建表和对应的索引文件,这是最后的也是很没有效率的一种方法,一般不这么使用。主要代码为:/重建DROP TABLE IF EXISTS search_local;String deleteLocalUrl = DROP TABLE search_local;String createLocalUrl = CREATE TABLE search_local (id int(11) primary key, +url varchar(250) default NULL, +CreateDate varchar(255), +visite varchar(1);String deletePreURL = DROP TABLE search_pre;String createPreURL = CREATE TABLE search_pre (id int(11) primary key, +url varchar(250) , +CreateDate varchar(255), +visite varchar(1);结 论本文经过对搜索引擎的系统体系结构的分析,完成了一个基于Lucene的搜索引擎。文中针对搜索引擎的系统结构作了详细的介绍和分析,本文中所设计的搜索引擎,主要有四个大的模块组成:一是抓取模块:实现了对网页信息的下载。二是索引模块:实现了对网页信息的索引。三是搜索模块:实现了对网页信息的快速检索。四是用户接口:实现了系统的前台操作。通过这四个模块功能的的组合,本系统能够实现对网络资源的搜索,快速的查找到用户想要搜索的网络信息。本系统在设计时由于时间有限,这里面仍

温馨提示

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

评论

0/150

提交评论