86垂直引擎搜索的设计与实现.docx
《86垂直引擎搜索的设计与实现.docx》由会员分享,可在线阅读,更多相关《86垂直引擎搜索的设计与实现.docx(24页珍藏版)》请在冰豆网上搜索。
![86垂直引擎搜索的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/30/1bbf64e5-c331-4dd8-9040-885635e9a20d/1bbf64e5-c331-4dd8-9040-885635e9a20d1.gif)
86垂直引擎搜索的设计与实现
86-垂直引擎搜索的设计与实现
雷其泞
摘要
随着网络的日益发展,人们已经越来越习惯从网上获取对自己有用的信息。
Lucene是构建搜索引擎的其中一种方式。
此次毕业设计所做的垂直引擎搜索系统是用JAVA语言编写的。
主要完成的功能有:
用爬虫抓取网页;获取有效信息放入数据库;通过Lucene建立索引;对简单关键字进行搜索;使用Ajax的局部刷新页面展示结果。
本篇论文针对垂直引擎搜索方面,详细的介绍了垂直引擎搜索系统的现状和背景,并进行研究,设计并实现了系统的需求分析以及搜索功能。
在实现功能的同时,也对搜索引擎的工作原理、功能模块等方面进行了详细的介绍。
实现了Ajax的异步数据交互,从而完善了整个垂直搜索引擎系统的设计。
关键词:
Lucene;异步更新;Ajax;搜索引擎
ABSTRACT
Withthedevelopmentofnetwork,peoplehavemoreandmorehabitsfromtheInternettoobtainusefulinformationaboutthemselves.Luceneisonewayfortheconstructionofasearchengine.ThegraduationdesignforverticalsearchenginesystemiswrittenintheJAVAlanguage.Maincompletedfeatures:
usethecrawlerscrapingofthepage;Accesstoeffective informationinthedatabase;ThroughtheLuceneindex;Thesimplekeywordsearch;UsingAjaxpartialrefreshthe pagedisplayresults.
Verticalsearchengine,thispaperaimedatthecurrentsituationoftheverticalsearchenginesystemareintroducedindetailandbackground,andcarryonresearch,designandimplementthesystemrequirementsanalysisandsearchfunction.Atthesametimeoffunctionality,Alsotothesearchengine'sworkingprinciple,functionmoduleandsoonhascarriedonthedetailedintroduction.TheAjaxasynchronousdatainteraction,andperfectthedesignofverticalsearchenginesystem.
Keywords:
Lucene;Asynchronousupdate;Ajax;Searchengines
目录
摘要………………………I
ABSTRACT………………………II
第1章绪论………………………1
1.1研究现状………………………1
1.2主要研究的目的及内容………………………1
1.3研究方法及设计思路………………………1
1.3.1研究方法………………………1
1.3.2设计思路………………………1
1.4论文结构………………………2
1.5垂直搜索引擎………………………2
1.5.1垂直搜索引擎的定义………………………2
1.5.2垂直搜索引擎的框架………………………3
1.5.3垂直搜索引擎的特征………………………3
1.5.4通用搜索引擎与垂直搜索引擎的区别………………………4
1.5.5著名的垂直搜索引擎………………………4
1.6本章小结………………………5
第2章相关技术简介………………………6
2.1有关JSP的介绍………………………6
2.2MySql数据库………………………7
2.3有关JDBC的介绍………………………7
2.4B/S模式分析………………………8
2.5GOOGLE给出的网页评分的算法………………………9
2.6本章小结………………………10
第3章需求分析与可行性分析………………………11
3.1需求理解………………………11
3.1.1权限管理………………………11
3.1.2管理数据………………………11
3.2应用需求分析………………………11
3.3运行需求分析………………………12
3.4其他需求分析………………………12
3.5可行性分析………………………12
3.5.1经济可行性………………………12
3.5.2技术可行性………………………13
3.5.3运行可行性………………………13
3.5.4时间可行性………………………13
3.5.5法律可行性:
………………………13
3.6本章小结………………………13
第4章系统设计………………………15
4.1概要设计………………………15
4.1.1业务流程………………………15
4.1.2搜索引擎模型………………………16
4.2功能结构设计………………………17
4.2.1总体功能结构图………………………17
4.2.2系统功能分析………………………17
4.3详细设计………………………18
4.3.1全文检索的实现机制………………………18
4.3.2Lucene的索引效率………………………18
4.3.3基于词典的分词算法………………………错误!
未定义书签。
4.3.4Lucene与Spider的结合………………………20
4.3.5过滤模块的实现………………………22
4.3.6爬取网页………………………23
4.3.7分析网页………………………错误!
未定义书签。
4.3.8判断相关度………………………23
4.3.9保存网页信息………………………24
4.3.10数据库设计和存储………………………24
4.3.11附加功能………………………24
4.4本章小结………………………24
第5章系统实现………………………25
5.1主界面………………………25
5.2管理员后台登录………………………27
5.3数据库的相关代码及展示………………………30
5.3依然存在的问题………………………33
5.4本章小结………………………33
第6章总结与展望………………………35
参考文献………………………36
第1章绪论
1.1 研究现状
随着互联网的快速发展,互联网技术已经应用到普通百姓的生活的方方面面,其中搜索引擎的使用尤为广泛。
在最近的15年时间段,是搜索引擎爆炸性快速发展的阶段。
搜索引擎的发展从最早的分类目录的一代,经历文本检索,链接分析,到现在的以用户为中心的一代,为了顺应这种以互联网用户的个性化和和社交化为中心的趋势,垂直搜索引擎应运而生[1]。
垂直搜索引擎是一个具有行业色彩的搜索服务,针对特定的人群或领域。
1.2主要研究的目的及内容
让所有用户从同一个入口进入已经渐渐无法满足让用户对搜索的结果满意,现在的用户需要更深入、更细致的查询方法。
而以现在的科技水平来说,要及时获得网上的比较具体的信息是很困难的。
如何让搜索引擎变得更加深入、专一和及时变成了现在的主要研究方向。
1.3研究方法及设计思路
1.3.1研究方法
采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个搜索引擎网站[2]。
采用JSP作为开发工具,结合mysql数据库,数据库设计遵循3范式。
解决了搜索引擎中存在的数据安全性、数据一致性以及系统运行速度等问题。
1.3.2设计思路
解决本课题的思路是:
(1)理解什么是垂直搜索引擎,并且要多查询相关的资料和书籍,了解要做垂直搜索引擎需要使用哪些算法。
(2)针对该课题的算法方面,首先是通过相关资料和书籍来了解需要哪些算法,再专门对这些算法进行了解分析,加上自己的想法来设计和改进。
要做一个搜索引擎,首先要对其的技术架构进行分析设计,分别是网络爬虫、网页去重、云存储与云计算平台、内容相似性、链接分析、网页排序等。
(3)在网页分析阶段,对数据的保存采用“倒排索引”这种高效的数据结构的查询方式。
每个网页上面通常还有其他页面的链接,在进行分析的时候,通过“链接分析”对各个网页进行重要性的排序分析。
(4)在搜索引擎的各个功能模块中,“反作弊”也越来越受到重视。
在对各网页进行排序的时候,出现了很多的“作弊”方式,因此,采用“反作弊”也就很重要了,通过这种方式来给用户带来更好的搜索体验。
1.4论文结构
第一章为绪论,在本章中,首先讲述了关于此次毕业设计的涉及到的研究背景以及现状。
然后,对垂直搜索引擎的相关知识进行了比较详细的讲解。
最后,就通用搜索引擎的特性与垂直搜索引擎进行了比较。
第二章为系统的需求分析和可行性分析,讲述了编程的条件以及可行性。
第三章为相关技术简介,其中介绍了关于JSP的概念和优点等方面,然后概述了MYSQL数据库的相关内容,除此之外还对JDBC进行了介绍,最后是有关于B/S模型的概述。
第四章为系统设计,是对此次毕设所完成的工作的一个综述。
在本章中,详细的描述了整个系统的结构。
接着,对各个模块的的功能进行了介绍了。
最后,展示了一部分系统运行的结果和少量核心代码。
第五章为总结与展望,简略的总结了本次毕设自己所做的工作,反省了自己存在的不足,对在这几个月里帮助过我的人表示感谢,以及对垂直搜索引擎的未来的展望。
1.5垂直搜索引擎
作为一个高性能的搜索引擎,它所显示的、所提供的信息或者相关内容肯定会非常接近用户输入的关键字[3]。
例如XX搜索这种综合搜索引擎与“年轻”一些的垂直搜索引擎相比之下,最大的区别在于前者是属于模糊搜索而后者是精准搜索。
在XX里输入一个关键词,经常会返回给你一些与关键词联系性不是很强的搜索结果,而在淘宝网上搜索要买的东西,出来的必定是相关的宝贝。
1.5.1垂直搜索引擎的定义
垂直搜索引擎可以根据用户输入的关键字先对库中存储的信息进行整理,通过定向分字段的方式提取出用户所请求的数据并返回给用户。
垂直搜索引擎因为其查询网上信息的准确性高、查询具有一定的深度和具体的特点,迅速的被大众接受并且被广泛的使用[4]。
1.5.2垂直搜索引擎的框架
其工作的主要流程为:
第一步:
从网络上尽可能的抓取用户需要的数据。
第二步:
整理从网上抓取的数据然后将这些数据保存到数据库中。
第三步:
创建一个索引,将存入数据库中的数据有序的排列起来,便于以后检索和查找。
第四步:
建立检索模型,设计排序算法。
第五步:
将想要搜索的内容的关键字输入以进行检索,实现交互。
用户可以输入关键词来查找自己想要了解的内容,系统会对关键词进行检索,之后将有效的信息返回。
图示为垂直搜索引擎的基本结构如图1.1所示:
图1.1垂直搜索引擎基本结构
1.5.3垂直搜索引擎的特征
(1)中文直达。
垂直搜索引擎能直接链接大部分的网站、论坛以及其他相关站点,能实现数据的及时更新。
从而使用户只搜索一次就能获取想要的信息。
(2)关键词直达网站。
客户可以直接访问各个商业网站。
这样可以创造更多的消费空间。
(3)站内直达。
用户可以直接访问到自己搜索的页面或者频道。
(4)内容全面。
垂直搜索能获取各大网站的信息,同时也能从通用搜索引擎中获取数据,十分强大。
(5)完美兼容。
能在各式各样的环境中运行。
(6)安全第一。
垂直搜索引擎由于收录了很多的有名的网站的确切地址,因此能够有效的阻拦不良的商家网站,让用户能够一步直达关键词所在的网站,避免被钓鱼网站欺骗。
1.5.4通用搜索引擎与垂直搜索引擎的区别
从结构上来讲,两者是相差不多的。
不同的是两种搜索引擎对抓取过来的信息的处理方式[5]。
通用搜索引擎仅仅只能从网络上抓取信息,而不能将抓取下来的信息进行整理和区分。
垂直搜索在此基础之上多了一个具有信息抽取功能的模块。
它会将从网页上抓取的有用信息存放到数据库中,利用去重、分类等步骤对信息进行处理,最后根据用户输入的关键词将他们需要的信息返回。
1.5.5著名的垂直搜索引擎
现在,国内的较为知名的有淘宝的一淘网,优酷的搜库等。
一淘网如图1.2所示:
图1.2一淘网
优酷视频搜索如图1.3所示:
图1.3优酷搜索界面
1.6本章小结
本章是对垂直搜索引擎的方方面面的一个较为详细的描述。
先阐述了现今人们对于这方面的重视程度,然后再对其定义、特征等方面做出概括。
最后简单列举了几个比较出名的这方面的例子。
第2章相关技术简介
本章详细讲述了编写此垂直引擎搜索系统所需要的相关知识,对JSP、MYSQL数据库等进行了逐一的介绍。
2.1有关JSP的介绍
我最开始学习JSP的基础知识是在上大二的时候。
在学习的初期,我还不能理解它的作用,只是很机械的记住相应的知识点。
但是随着学习的不断深入,我逐渐体会到它的用处。
JSP属于JAVA语言编程的范畴,它的主要作用是编写HTML页面[6]。
我们可以将由JSP编出的动态页面作为一个接口来操作整个应用程序。
现今大部分的网页页面都是由JSP编写的,足以见得它的实用性。
其工作原理如图2.1所示:
false
图2.1JSP运行原理
JSP主要优先如下:
(1)一次编写,到处运行。
用JAVA语言编写的代码可以不用修改,直接放到另一个环境中使用。
(2)十分简单,只要你掌握了JAVA和HTML两种语言,就具备了开发JSP的基础知识。
(3)适用性好。
无论文件有多大,都能使用JSP。
由此可见JAVA语言的适用范围非常广泛。
(4)能利用各种开发工具。
JAVA的开发工具非常之多,数不胜数,而其中优秀的开发工具也不占少数。
这些开发工具大多数都能免费得到,这就使得JAVA能流畅的运行于各个环境之中。
2.2MySql与数据库
数据库顾名思义,是一个用来存放数据的地方。
我们可以将数据库看成一个集合,然后把将要存入的数据看成是集合中的元素。
这些元素在这个集合中被有序的排列起来。
数据库有两方面内容,一方面是存放数据的地点,另一方面是操控和调用里面的数据。
在本次毕业设计所实现的系统中,调用和操作数据库中的数据的方法便是使用MYSQL。
MYSQL并不像例如ORACLE等数据库那样复杂。
MYSQL系统非常的简便而且运行效率较高,再加上其开源的特性,被人们广泛的使用。
与此同时,MYSQL能够兼容各个运行环境,在许多系统下流畅工作。
MySQL对于任何规模的企业都能提供高性能、可扩展的数据库应用。
2.3有关JDBC的介绍
本次毕设所做的垂直引擎搜索系统是使用JAVA语言编写的,所以系统在于数据库进行连接的时候使用的方法必然是JDBC。
JDBC由一组特殊的类与接口组成。
是JAVA应用程序连接数据库的标准方法。
如果没有JDBC,那么访问不同的数据库便是一件非常复杂的事。
假如一个程序员想访问Oracle数据库的话,那么他就需要专门编写一个程序;当他有需要访问别的数据库时,这个程序就不能用了[8]。
他必须重新再专门针对那个数据库编写一个访问程序。
这样做无形中增加了人们很多的负担。
而程序员只需用JDBC编写一次程序便可以在所有的平台上运行,这就减少了很多繁琐的工作。
这也恰恰印证了JAVA语言的特点。
2.4B/S模式分析
C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成[9]。
客户应用程序的主要功能是与使用系统的用户进行数据的交换,将用户需要的信息及时的返回并呈现出来。
服务器程序的功能就是对系统的资源进行合理的分配。
比如某个时间段内有许多的用户同时访问并且请求相同的资源时,那么服务器管理程序就需要对这些请求进行分析,然后做出最优选择。
中间件则在C/S模式中起到一个协同作用,它负责将客户应用程序和服务器管理程序合在一起工作,这样能够更好的满足用户访问的需求。
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。
B/S模式与C/S模式相比,在各个方面都有了极大的提升。
它不再像C/S一样由三个部件组成,而是将通过一个具有三层结构的服务器体系来与用户实现交互的,这个服务器体系是由一个数据服务器和多个WEB服务器组成的。
服务器的第一层名叫客户机。
用户要想从系统获得信息必须通过它,它是人机交互的重要接口。
一般情况下,应用程序都会是一个浏览器,比如IE浏览器或者Netscape等。
因为HTML是无法直接与用户进行交互的,而浏览器可以将HTML代码转换成具有图像和文字的内容丰富的网页。
这样网页就能够处理用户的请求并且及时提交给后台。
这个后台就是第二层的Web服务器。
在整个服务器体系的第二层中,Web服务器接受到来自用户的请求后,通过相应的进程来响应这些请求。
同时输出一段HTML代码段,并把处理的结果一并放入其中,返回到浏览器。
除此之外,Web服务器还能在数据库服务器的协助下对用户请求中的数据进行存取。
第三层是数据库服务器,它的任务是协调SQ请求和管理数据库。
B/S模式的一大特点就是它简化了客户端。
如果客户要通过C/S模式访问网页上的数据的话就必须安装与之对应的应用程序。
但是在B/S模式下只需使用浏览器就能访问各种网页。
这种模式的优点显而易见,即能节省大量的硬盘空间。
同时还可以使用户更快、更简单的网络。
比如我们在教室里上课,老师特别准备的有资料,他就可以不用将资料带过来,而是直接在教室内联网,通过任意一种浏览器就能找到他存放在自己网盘里的资源。
然后,B/S模式由于不需要像C/S模式访问那样必须使用与之对应的应用程序,所以它的开发和维护与之相比就简单了很多。
首先,开发者把所有的功能都在Web服务器上实现。
其次,他再为不同级别的用户设置权限。
每个用户只能在自己的最大权限内使用Web服务器来获取自己想要的信息。
这种模式非常适合现在节奏逐渐加快的生活环境。
现在大多数企业对自己内部的更替和调整变得越来越快,公司不可能为每一个用户去升级应用程序,这从人力和时间上来讲都不现实。
所以这种模式能够很好的提高整个企业的运转效率。
只需在Web服务器上进行修改即可。
与此同时,还能节省掉很多不必要的麻烦。
再其次,用户的门槛也因此降低了。
在C/S模式下,因为不同的应用程序都有不同的规格限制,要想使用必须具备相应的知识。
这样就会将许多不从事计算机想过工作的人无法使用网络。
而在B/S模式下,只需一个普通的浏览器就能解决所有的不方便。
这也使得更多的人能够使用。
最后,由于B/S能够通过浏览器在网上实现一些C/S模式实现的功能,譬如在网页上发布一些通知,文件。
而这些特点如果利用学校的话,既能发布重要通知,告知全体同学。
又能为学校做宣传。
实用价值很高。
2.5GOOGLE给出的网页评分的算法
最早提出网页评分的计算方法是Google。
他们针对用户对网页的网页的访问做了一个专门的模型。
模型假设如下:
首先,用户随意的点进一个网页浏览,并且把这个网页看作是起始网页。
紧接着,在用户浏览完这个网页的全部内容后,随机点击网页上的一个超链接,之后停留在超链接跳转的网页上继续访问。
然后,不停地顺着当前网页的超链接一直浏览网页,直到用户对网页的主题产生反感。
之后在让用户另选一个主题的网页去浏览,然后重复上述步骤。
最后,根据这种用户行为模式,每个网页的链接权值就可以通过其可能被访问到的次数来表示。
那么如何计算这个权值呢?
PageRank采用以下公式进行计算:
false(2.5)
这是一种非常高效而简单的提高用户输入关键词后返回结果质量的方法。
这种方法同样能够较为有效的防止搜索引擎被一些恶意的网页欺骗。
所以这种方法被广泛的网页的排序上。
某网页评分越高,在检索器显示的网页排名上就越靠前,那么用户就越容易去访问它。
2.6本章小结
本章针对毕业设计所涉及到的相关知识进行了简单的阐述。
介绍了关于有关JAVA的、数据库的和编写网页所具备的各种理论知识。
为后面的概要和详细设计做铺垫。
第3章需求分析与可行性分析
在本课题中,最重要的对中文分词技术的理解与运用,同时根据自己的理解,可以加以改进成为课题的技术。
目前来说中文分算法可分为三大类:
首先基于字符串匹配分词可以理解为机械分词算法,然后基于理解的分词算法是在分词的同时进行句法分析语义分析由此来模拟对人对句子的理解,最后的基于统计的分词方法是对语句中字组频率进行统计,不用切词字典但是错误率很高。
通用搜索引擎虽然能够查询互联网上大部分信息,但是这种搜索引擎显示给用户的搜索结果往往不能令用户满意。
垂直引擎搜索系统的设计目的就是让用户获取的搜索信息准确度更高,结果更加贴近关键词。
3.1需求理解
可以将本次毕设的所做的垂直引擎搜索系统的使用人员分成两类,第一类是普通的访客,第二类是系统的管理人员。
3.1.1权限管理
因为使用人员分为普通访客和管理员,所以访客只能访问搜索页面,然而管理员就有权限做许多事情,比如搜集数据、清空数据、查看用户的搜索记录等。
3.1.2管理数据
管理员能自由的对数据库里的数据进行操作。
首先,管理员也能像普通访客一样通过搜索引擎搜索自己想要查询的数据。
其次,还能够查看一段时间内访客利用系统所查询的所有数据。
然后,也能够在查询数据过多时清空数据库里的数据,重新记录之后访客的操作行为。
最后,还能把查看用户的操作记录。
3.2应用需求分析
表3.2硬件的应用分析
服务器硬件处理器:
Intel酷睿内存:
512M或更大硬盘:
120G或更大
软件MicrosoftWindowsXPSqlServer浏览器
客户机硬件能连接互联网
软件MicrosoftWindowsXP浏览器
系统运行时基本不依赖其他辅助程序,而且不用对数据加密。
3.3运行需求分析
硬件要求:
INTELCOREI3以上、512M的闪存、5G以上的硬盘;打印机;能连接网络。
软件要求:
2000年以后推出的WINDOWS系统即可
3.4其他需求分析
本系统的开发难度不大,但是也有一定的效率。
同时也具备良好的可靠性。
系统的操作难度不高,界面简单,极易上手。
在有限的条件下,尽力满足各个方面的需求。
3.5可行性分析
可行性分析是对本次毕业设计开发的系统所需要的条件做一个评估,看看完成整个毕业设计是否值得投入人力和物理去开发。
3.5.1经济可行性
经济可行性是从开发系统所消耗的费用上来判断其性价比。
先对开发与维护整个系统所消耗的费用进行一个预估,然后对这个系统投入运行后能够产生的经济效益有一个保守的估算,结合两者反馈的信息来考量这个系统的开发价值。
论文所描述的系统是根据毕业设计的任务计划书来开发的,是由学生一个人在指导老师的带领下独立完成的。
使用到的东西只有一台笔记本电脑。
如果这个系统由专门的开发人员来做的话效率会很高。
开发的时间短就意味着开发的人员费用很低,从而使得开发费用降低。
因此从经济的角度来看这个系统是可行的。
3.5.2技术可行性
技术可行性是通过自己能够使用的资源来判断能否完成自己将要做的工作,以及自己所能利用的软件和硬件都能不能达到开发所需的最低标准。
运行