




免费预览已结束,剩余40页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 毕 业 论 文 游戏垂直搜索引擎:基于Heritrix网络爬虫的搜索引擎DEMO系统Game Vertical Search Engine: Search engine DEMO system based on Heritrix web crawler姓 名: 学 号:学院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月摘 要搜索引擎是互联网检索技术的核心,随着互联网的迅速发展,目前的综合搜索引擎已无法满足用户的需求,这就成就了垂直搜索引擎的蓬勃发展。垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,相对通用搜索引擎的信息量大、查询不精确、深度不够等提出来的新的搜索引擎服务模式。通过针对某一特定领域或某一特定需求提供的有一定价值的信息和相关服务。本文构建一个关于游戏的垂直搜索引擎,让用户可以在这个游戏搜索网站上,搜索到其需要的游戏信息,并能从搜索结果中打开一个有关详细信息的页面进行浏览。系统使用MyEclipse作为开发环境。后台数据处理使用Lucene索引工具和Heritrix爬虫技术,前台使用JSP技术进行页面设计,后台数据库使用MySQL数据库。设计的目的是让用户可以在网站上搜索其需要的游戏信息,并能从搜索结果中打开一个有关游戏详细信息的页面进行浏览。在系统中,游戏信息是从新浪游戏、17173和迅雷游戏上利用Heritrix抓取下来的。网页经过HTMLParser解析后,得到的游戏详细信息插入到MySQL数据库中,并为该游戏建立Lucene索引。最后构建一个简单的Web平台,对建立的索引和数据库进行整合,为用户提供真正的搜索服务。另外,本文还对Lucene 和Heritrix 等一些开源java项目进行了简单的介绍。关键词: 垂直搜索;搜索引擎;LuceneAbstractSearch engine is the core of the Internet information retrieval technology, with the rapid development of Internet, the current horizontal search engine cant satisfy these Internet users, which gives a good opportunity to vertical search engine to develop. Vertical search is a professional search engine in one industry, is the subdivision of search engine. Compared with horizontal search engine which is huge information, inaccurate, not enough depth, the vertical search engine put forward a new model search engine services. Vertical search engine provides special information and related services to a particular area or a specific demand for a certain value.This article builds a vertical search engine for game industry, providing the user to search in this game website, searching for game information which they need, and they can click the search results to open a detailed information page. The system uses MyEclipse as a development environment, and uses Lucene index tool and Heritrix crawler technology to do background data-processing, and uses JSP technology to design the front pages. Besides, it uses MYSQL as the background database. The aim of this design is to make the users search for the game information of their needs in the website, and click the search results to open a detailed game page to browse the game information. In the system, game information is from Sina, 17173, and Thunder websites by using the Heritrix crawler. After been analyzed by HTMLParser, the information is inserted into the MySQL database, then establish the Lucene indexing of the game. Finally, we build a simple Web platform, and integrate the index and database, providing real search services for the users. In addition, this article also makes a brief introduction to Lucene and Heritrix, which are open-source java projects. Key words:Vertical search; Search engine; Lucene目录第一章:引言1第二章:垂直搜索引擎的概况22.1垂直搜索引擎介绍22.2垂直搜索具的特征42.3垂直搜索引擎与综合搜索引擎的比较62.4垂直搜索的发展现状82.4.1垂直搜索发展的可行性82.4.2垂直搜索引擎存在的必要性82.4.3用户对搜索引擎的依赖性92.5垂直搜索的发展方向9第三章:搭建游戏垂直搜索引擎113.1项目概述113.2研究目的113.3可行性分析113.4需求分析123.5系统总体结构图133.6功能模块分析133.6.1后台数据处理模块133.6.2前台视图模块143.7 垂直搜索系统框架143.8Lucene简介153.8.1 Lucene系统结构和功能分析153.8.2 Lucene全文检索的实现机制及步骤163.8.3 Lucene索引的建立173.8.4 Lucene的搜索183.9 Heritrix简介193.10网络爬虫模块设计203.11网页解析模块设计253.11.1基类设计263.11.2具体解析类设计273.12数据库与索引模块设计273.12.1 gameinfo类273.12.2数据库结构273.12.3数据库处理和索引处理283.12.4调用数据库处理类和索引处理类283.13前台视图模块设计293.13.1 搜索界面welcome.jsp293.13.2 搜索结果界面result.jsp29第四章:系统的运行结果32第五章:结束语35致谢语36参考文献37ContentsChapter 1:Introduction1Chapter 2:Overview Of Vertical Search Engine22.1 Introduction Of Vertical Search Engine22.2 Characteristics Of Vertical Search Engine 42.3 Compared Vertical Search Engine With Horizontal Search Engine62.4 The Development Of Vertical Search82.4.1 The feasibility of the development of vertical search82.4.2 The necessity of existence of vertical search engines82.4.3 The dependent on the search engine92.5 The Direction Of The Development Of Vertical Search9Chapter 3:Set Up A Vertical Search Engine In Game Industry113.1 Project Overview113.2 The Purpose Of The Study113.3 Feasibility Analysis113.4 Requirements Analysis123.5 The Oerall Structure Of System133.6Analysis Of Functional Modules133.6.1 Background data processing module133.6.2 Foreground view module143.7 Framework For The Vertical Search System143.8 Introduction Of Lucene153.8.1 Lucene system structure and function analysis153.8.2 Lucene full-text search mechanism and the steps to achieve163.8.3 Lucene index to establish173.8.4 Lucene Search183.9 Introduction To Heritrix193.10 Network Crawler Modular Design203.11 Page Extractor Modular Design253.11.1 Base class design263.11.2 Specific extractor class design 273.12 Database and indexing module degign273.12.1 Class gameinfo273.12.2 Database structure273.12.3 Database processing and index processing283.12.4 Call the class of database processing and index processing283.13 Foreground View Module Design293.13.1 Search interface:welcome.jsp293.13.2 Search result interface:result.jsp29Chapter 4:Runing Result Of The System32Chapter 5:Summary35Acknowledgement36References37游戏垂直搜索引擎-基于Heritrix网络爬虫的搜索引擎DEMO系统第一章:引言当今,互联网已在人们生活中扮演越来越重要的角色,网络信息资源的爆炸式增长使得人们获得有用信息日益困难,垂直搜索引擎应运而生。在浩如烟海的信息世界里,用户想要快速找到所需资源,搜索引擎是不可缺少的。本文以游戏行业垂直搜索网站的搭建开发为背景,深入理解搜索引擎的开发思想,针对所负责的模块,进行垂直搜索引擎项目的开发。首先对垂直搜索引擎进行了简要的介绍,介绍了垂直搜索的几个特征,垂直搜索和综合搜索之间的异同,以及垂直搜索的发展和前景。接下来,本文以软件工程的思想的文档要求进行书写,包括:项目概述、研究目的、可行性分析、需求分析、系统总体结构、各模块的分析及垂直搜索的系统框架。之后转让各模块的详细设计,确定每个模块的算法和内部数据组织,并用各种表达工具进行清晰的描述。系统使用MyEclipse作为开发环境。使用Lucene索引工具和Heritrix爬虫等技术,构建一个简单的Web平台,对建立的索引和数据库进行整合,为用户提供真正的搜索服务。在此网站系统的开发过程中,我主要完成了网络爬虫模块Heritrix配置、抓取的设计,将需要搜索的几个游戏频道网站的网页抓取存在本地,供后续的析取索引之用,还负责前台JSP页面和网站logo的设计。并积极配合协助李新泉对索引、搜索模块的开发。第二章:垂直搜索引擎的概况2.1垂直搜索引擎介绍垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理 后再以某种形式返回给用户。相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加 专注、具体和深入。具体而言, 垂直搜索引擎就是对网页库中的某类专门的信息进行一次整合, 定向分字段抽取出需要的数据, 进行处理后再以某种特定形式返回给用户, 它是搜索引擎的细分和延伸。垂直搜索引擎和普通的网页搜索引擎的最大区别是对网页信息进行了结构化信息抽取, 也就是将网页的非结构化数据抽取成特定的结构化信息数据。如果说网页搜索是以网页为最小单位, 而垂直搜索是以结构化数据为最小单位。将这些数据存储到数据库, 进行进一步的加工处理, 如: 去重、分类等, 最后分词、索引, 最终以对结构化数据的搜索的方式满足用户的信息需求。整个过程中, 数据由非结构化数据抽取成结构化数据, 经过深度加工处理后以非结构化的方式和结构化的方式返回给用户。垂直搜索提供了整合深度和广度的行业信息以及更加细致周到的服务,做到了用于要求的专、精、深。因而业界普遍认为垂直搜索将是搜索市场下一个增长点,具有非常好的前景。垂直搜索引擎的应用领域很多, 比如找工作的搜索、旅游搜索、医药搜索、图书搜索、游戏搜索、购物搜索几乎各行各业各类信息都可以进一步细化成各类的垂直搜索引擎。目前中文垂直搜索引擎也已经出现了很多, 比如以下两个著名的找工作和旅游的搜索引擎网站: (1)工作搜索引擎:职友集(/) 。汇集了各大工作网站的信息,信息量非常大。图2.1 职友集网站截图(2)旅游搜索引擎: 去哪儿 ()。汇集了各大航空的机票信息,具有很好的及时性。图2.2 去哪儿网站截图垂直搜索引擎与综合搜索引擎相比, 其信息服务模式有所变化, 它更加注重信息的深度, 更体现“以人为本”的理念。综合搜索引擎好比是“超市”, 其经营商品无所不包, 可以查询所有网站上的信息; 垂直搜索引擎则好比是“家具城”、“电脑城”, 提供专项服务。2.2垂直搜索具有的特征:特征1:面向特定领域或对象垂直搜索网站行业选择的原则:l(1)这个行业要有垂直搜索的大量需求;l(2)信息来源相对集中,避免采集全网,降低采集成本;l(3)信息处理量要足够大,太小了可以被人工代替;l(4)根据自己的情况选择专业深度;l(5)用户购买能力强,厂商投放广告的资金量大表2-1:垂直搜索领域表特征2:面向特定需求垂直搜索的用户是有特定需求的。以汽车为例,主要需求有:购车,用车,修车,转让二手车,选驾校,选4S店等等,酷讯做“火车票”搜索,就是把握了出行高峰购票难的需求。特征3:全面既然已经受限到特定领域,就要把这个领域的信息尽可能都收集全,尽可能的保证信息的全面。特征4:深入n借助行业知识进行深度挖掘,积累行业背景知识,利用数据挖掘等手段,发现信息之间的关联和趋势,给用户提供可以用来指导实践,解决问题的“知识”,从而达到“深”的效果,这是垂直搜索超越通用搜索的一个关键点。特征5:准确n由于限定了领域,因此搜索结果有更好的相关性。比如输入“Polo”,在汽车领域就是Polo汽车,而不会返回Polo衬衫或者Polo皮带等等。由于有领域知识的支持,用户的需求又比较集中,因此有理由给出更准确的检索结果。特征6:及时通用搜索缺乏时效性,垂直搜索中存在“时间维”(1)不能总把所谓最相关内容的排在最前面,因为有可能已经过时了。(2)垂直搜索的搜索范围小,也为及时更新创造了条件特征7:结构化利用信息抽取技术把非结构化信息自动转换为结构化信息,并与原有的结构化信息整合检索,这是垂直搜索的关键一步。它具有以下两个好处:l(1)大幅度地减少用户获取信息的速度l(2)在数据库中可以方面地进行深层的归并、统计、挖掘等2.3垂直搜索引擎与综合搜索引擎的比较(1)信息服务用户的比较:表2-2:垂直搜索引擎和综合搜索引擎信息服务用户的比较垂直搜索引擎综合搜索引擎用户数量小大用户对需求的描述明确不明确用户的介绍垂直的搜索引擎, 用户有明确的信息需求, 同时这种信息需求可以界定在某一个特定范围内, 并且满足其信息需求的信息产品是特定形式的组织化的信息, 它提供的结果都是与用户需求相关的, 用户不用自己再进行分析和判断。传统的综合的搜索引擎, 就是为网民提供一个检索的入口, 提供整个互联网上与用户提问相关各种网页信息, 然后用户自己判断结果中的信息哪些是相关的, 哪些是不相关的。(2)信息服务内容的比较:表2-3:垂直搜索引擎和综合搜索引擎信息服务内容的比较垂直搜索引擎综合搜索引擎搜索结果的形式结构化的数据网页简单的描述和链接搜索结果的查全率有限,查全率不足数量巨大搜索结果的查准率很高相对较低搜索结果的描述内容针对性强,从多个角度描述用户查找的特定信息非人工干预,针对性较弱(3)信息服务策略的比较:表2-4:垂直搜索引擎和综合搜索引擎信息服务用户的比较垂直搜索引擎综合搜索引擎服务者的能动性被动被动提供服务的时间较长较短信息服务产品经营无偿无偿服务者与用户空间距离远程服务远程服务服务手段抓取、网页结构化信息抽取技术、元数据采集技术、分词技术、索引技术搜索技术、抓取、索引、排序等技术(4)信息服务模式的比较:这两种搜索引擎的服务模式可以如下图所示:图2.3 综合搜索引擎和垂直搜索引擎服务模式比较图2.4垂直搜索的发展现状2.4.1垂直搜索发展的可行性2009 年CNNIC的第23次报告显示,截止到2008年12月31日,我国网民总人数达到2.98 亿,超过美国,位居世界第一位。半年来平均每分钟就新增近100个网民,半年的增长接近去年全年的增长量;互联网普及率已经达到22.6%,比2008 年同期9.4%的互联网普及率提高了接近3个百分点;宽带网民数达2.7亿,手机网民数较去年翻了2.3倍,已有11760 万人。由上述的具体数据,我们可以看出垂直搜索领域的发展前景是相当广阔的,以年增长率31.7%的逐渐扩大的网民队伍,有可能通过垂直搜索的努力而由潜在用户变成为垂直搜索引擎的真正的、持久的用户。互联网普及率的提高可以在一定程度上说明,网络用户的上网行为、上网条件等因素将更加复杂化,不同的生活方式、学历背景、工作环境、兴趣爱好的人所产生的不同的信息需求将会带给垂直搜索引擎专业搜索引擎更多的商机与市场切入点。2.4.2垂直搜索引擎存在的必要性第23次报告显示:中国大陆地区域名总数已达到1682 万个,增长的主要动力来自中国国家顶级域名CN,年增长率达到489.5%。在全球国家顶级域名中,CN 域名数仅次于德国,居世界第二位。中国网站数量达到287万个,其中,增长最快的是CN 域名下的网站,截至2008 年12 月底,CN 下网站数达1357万,年增长率达到50.8%。域名与网站的迅速增长将会为人们带来更巨大的信息资源,但网络用户却常常因为查询不到自己所需的信息而被淹没在大量的、不相关的检索结果中,无所适从。垂直搜索的及时出现在一定程度上为人们解决了这个烦恼。垂直搜索引擎是专为查询某一学科或主题的信息而产生的查询工具,它专门收录某一方面、某一行业或某一主题的信息,其查准率很高,几乎可以达到90%以上。并且垂直搜索引擎提供的搜索结果形式为结构化的数据,描述内容是与检索需要密切相关的信息,因此用户几乎不需要点击链接就能直接选定自己想要的信息。垂直搜索引擎弥补了综合搜索引擎搜索结果数量大,相关度较低等缺陷,在搜索领域不可或缺;而面对增长数量迅速的域名和网站(其中我国网站在半年内增加了47 万个,年增长率达到66.4%),垂直搜索引擎更是具有存在的必然性与必要性。2.4.3用户对搜索引擎的依赖性在第23次报告中,搜索引擎的使用率仅次于网络新闻(77.3%),达到74.8%。08搜索引擎报告也表明了中国搜索市场持续升温的状态。虽然目前在搜索领域,综合搜索引擎的使用率仍占较大比重。用户对百度、Google 等大型综合搜索引擎的依赖性较强,但中国搜索市场整体上已经形成了既竞争又互补的格局,呈现出了功能和搜索内容上相互补充的态势。因此,专业的搜索引擎垂直搜索引擎必将有很大市场与商机,网络用户对综合搜索引擎的依赖性,也必将会在垂直搜索引擎上延续。2.5垂直搜索的发展方向(1)智能化目前, 从垂直搜索的应用情况看, 大部分垂直搜索的结构化信息提取都是依靠手工、半手工的方式来完成的, 面对互联网的海量信息, 很难保证信息的实时性和有效性, 对智能化的结构化信息提取技术的需求非常迫切。目前国内非结构化信息的智能提取技术取得了重大进展, 在一些领域得到了有效应用, 因此智能化成为了垂直搜索引擎的发展趋势。(2)目录再分类与早期的网址分类搜索引擎相似, 但垂直搜索引擎只选定了某一特定行业或某一主题进行目录的细化分类, 结合机器抓取行业相关站点的信息提供专业化的搜索服务。这种专业化的分类目录或称主题指南、列表浏览, 很容易让用户迅速知道自己要找的是什么, 并且按目录点击就能找到。(3)向深度挖掘型搜索发展深度挖掘型垂直搜索引擎通过对元数据信息进行深度加工, 为用户提供网页搜索引擎无法做到的专业性、功能性、关联性, 有的加入了用户信息管理以及信息发布互动功能, 能很好地满足用户对专业性、准确性、功能性、个性化的需求。专业的元数据属性构造背后需要一个强大专业人士组成的团队。这些专业人士对该领域的元数据模型进行专业的分析、关联整合, 再通过搜索技术按这些元数据模型把这些信息组织呈现给用户。(4)向搜索交易平台发展垂直搜索引擎由于自身对行业的专注, 使得它可以提供行业信息深度和广度的整合以及更加细致周到的服务。对消费领域可以推出针对某一行业的搜索交易平台, 比如美容搜索、餐饮搜索、购物搜索、机票旅游搜索。这种交易平台针对需要通过开展电子商务来获得更多顾客的商家。搜索交易平台让行业内商家和顾客直接沟通、咨询, 不再需要转到第三方平台再进行交易。搜索交易平台有可能发展成ebay、 taobao那样的购物平台。可以预见, 垂直搜索今后将会更加流行, 同时对人们网络生活的方方面面也将产生更为深刻的影响。第三章:搭建游戏垂直搜索引擎3.1项目概述设计构建一个关于游戏的垂直搜索引擎,以Eclipse作为开发环境。后台数据处理使用Lucene索引工具和Heritrix爬虫技术,前台使用JSP技术进行页面设计,后台数据库使用MySQL数据库。设计的目的是让用户可以在网站上搜索其需要的游戏信息,并能从搜索结果中打开一个有关游戏详细参数的页面进行浏览。在系统中,游戏信息是从新浪游戏、17173和迅雷游戏上利用Heritrix抓取下来的。网页经过HTMLParser解析后,得到的游戏详细信息插入到MySQL数据库中,并为该游戏建立词库和Lucene索引。最后构建一个简单的Web平台,对建立的索引和数据库进行整合,为用户提供真正的搜索服务。3.2研究目的开发具有全文(中文)检索的垂直搜索引擎系统.采用Lucene搜索引擎开发工具,开发网络蜘蛛和检索程序.针对已经提供的多个综合垂直门户网站, 分析其信息特点和关键词分布状况.完成垂直搜索引擎。意义是掌握、了解小规模搜索引擎技术。3.3可行性分析1)技术方面搜索引擎中用到了很多Java开源项目,如Lucene、Heritrix和HTMLParser等。其中Lucene和Heritrix本身的功能都极其强大,且扩展性良好,是本系统用到的核心技术。2)开发工具方面Java和JSP具有强大的平台无关性,“一次编写,到处运行”,开发出的系统可移植性强;MySQL数据库安全性好,功能全面,可扩展性强,且数据处理能力强,这两种技术能够完成系统的各项要求,充分保证系统的各项指标。3)后台数据来源搜索引擎中信息的质量的高低将直接影响到搜索效果,因此需要寻找信息量大,品牌齐全的几个游戏网站。精选的几个游戏网站基本都提供游戏相关信息查询,利用Heritrix抓取网站上游戏信息,经过解析后,存入后台数据库。3.4需求分析互联网已在人们生活中扮演越来越重要的角色,网络信息资源的爆炸式增长使得人们获得有用信息日益困难,垂直搜索引擎应运而生。在浩如烟海的信息世界里,用户想要快速找到所需资源,搜索引擎是不可缺少的。当今讲究垂直搜索的时代,空泛的信息已经不再是搜索的首选,用户更希望看到经过妥善整理和分类的有价值的信息。把用户最需要的放在最显眼的位置,次需要的放置到更多页面,不需要的删除。如今各大门户网站都提供游戏信息查询,但是多余信息比较多,为了方便用户查询,那些多余的信息完全可以删除,用户比较关心是有关游戏介绍的详细参数。设计构建一个关于游戏的搜索引擎,让用户在网站上搜索其需要的游戏信息,并能从搜索结果中打开一个有关详细信息的页面进行浏览。在系统的网站中,游戏信息是从新浪游戏、17173和迅雷游戏上利用爬虫抓取到的。这几个网站的信息量都非常大,介绍也比较齐全,可以满足用户的搜索需求。利用Heritrix爬虫抓取这些游戏页面,在本地建立镜像文件,然后利用HTMLParser这个工具解析网页内容。需要解析相关的信息内容。将这些信息插入到MySQL数据库中,并为数据库中的信息按id号建立索引。 有一个页面来为用户提供搜索服务。返回搜索结果的页面采用JSP技术动态生成,并能在结果页面中打开一个有关其详细介绍的页面进行浏览。3.5系统总体结构图WWW文档网络机器人程序建立Lucene索引从数据库中搜索信息Tomcat服务器Lucene索引数据库WWW浏览器WWW浏览器JSP网络机器人程序图3.1 系统总体结构图3.6功能模块分析3.6.1 后台数据处理模块1)网络爬虫模块分析这几个游戏网站的内容,准备网页的抓取清单,然后提交给Heritrix,作为种子进行抓取。Heritrix现有的功能组件,还不能够准确的抓取需要的页面,因此要对Heritrix进行扩展,以实现所需要的抓取。2)网页解析模块结合使用HTMLParser提供的相关API和JDK中的正则表达式来完成对网页的解析。解析生成文件的格式按照特定格式进行保存。3)数据库和索引模块定义一个类作为装载游戏信息的值对象。数据库中定义一张表,最后还要把gameinfo对象加入到索引中。3.6.2前台视图模块1)搜索界面模块提供搜索服务,输入关键字进行搜索。并有搜索关键字提示等功能,方便检索。2)结果界面模块搜索结果的显示界面,对搜索的结果进行分页显示,并为搜索结果提供超链接链向详细信息界面和原始地址。3)详细信息界面模块游戏详细信息的显示界面,显示这些游戏介绍的原始信息网页,供用户作进一步了解。3.7 垂直搜索系统框架图3.2 垂直搜索系统框架图3.8Lucene简介最初Lucene是Apache软件基金会Jakarta项目组的一个子项目,是一个完全开放源代码的全文检索工具包。Lucene在最初阶段是使用Java开发的。由于它的强大功能, Lucene逐渐被翻译成了多种语言,诸如C +、C#、Perl等。Lucene不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,它为数据访问和管理提供了简单的函数调用接口,可以方便地嵌入到各种应用中实现针对应用的全文索引/检索功能。3.8.1Lucene系统结构和功能分析Lucene系统结构如图3.3所示。图3.3 系统结构和源代码组织结构图Lucene作为一个优秀的全文检索引擎,其系统结构运用了大量的面向对象的设计思想。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台部分设计为抽象类,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象编程的处理,最终达到了一个低耦合、高效率、容易二次开发等的检索引擎系统。从图3.3可以清楚地看到,Lucene系统是由基础结构封装、索引核心、对外接口3大部分组成。其中直接操作索引文件的索引核心又是系统的重点,索引的最后结果就是产生许多的索引文件,这些索引文件构成索引库。Lucene系统将所有源码分为了7个模块(在Java语言中以包即package来表示) ,各个模块(包)完成特定的功能:表3-1:Lucene包结构功能表3.8.2Lucene全文检索的实现机制及步骤Lucene的API接口设计得比较通用,输入输出结构都很像数据库的表、记录和字段,所以很多传统的应用的文件、数据库都可以比较方便地映射到Lucene的存储结构或接口中。总体上看,可以先把Lucene当成一个支持全文索引的数据库系统。其索引/检索过程如图3.4所示。图3.4 检索系统原理在Lucene中,待索引的文件对应一个文档(Document)数据结构,每个Document包含多个字段( Field) 。Lucene根据Docu2ment对象中的字段属性和数据输出的要求,为字段选择不同的索引/存储字段规则。总的来说, Lucene实现全文检索功能有以下3个步骤:(1) 建立索引建立索引是全文检索的基础。检索时通常采用倒排文档( invert document)的方式来进行。也就是说,可以将一本书中的文字分成一个个词条,将每个词条所出现在书中的页码记录在词条后面。这样,用户需要查找该词条时,只要找到词条就可以根据词条后的页码找到所有该词条出现的位置。(2) 查找索引当索引建立好后,就可以对其进行查找了。Lucene所建立的索引是存放在文件系统中的,因此,查找索引时,需要首先将文件打开读入内存。(3) 更新索引由于实际的内容是不断更新的。因此,索引的内容也需要不断更新。Lucene同样提供了丰富的功能来支持索引的更新功能。3.8.3 Lucene索引的建立1)Document逻辑文件Lucene本身无法对物理文件建立索引,而只能识别并处理Document类型的文件。在某些时候,可以将每个Document与一个物理文件进行对应,用一个Document来代替一个物理文件;然而更多时候,Document和物理文件没有关系,它是作为一种数据源的集合,向Lucene提供原始的要索引的文本内容。Lucene从Document取出相关的数据源,并根据属性配置进行相应的处理。在Lucene中,数据源是由一个被称为Field的类来表示的。Field内部包含了两个静态内部类Store和Index,分别表示Field的存储方式和索引方式。Document的主要作用就是维护它内部的Field信息,包括对Field的增加、删除和查找等操作。2)索引工具IndexWriterIndexWriter的主要作用是对索引进行创建,加入Document,合并各种索引段,以及控制与索引相关的各方面,它是Lucene的索引的主要操作者。IndexWriter准备好以后,就可以向索引目录中添加Document。IndexWriter提供了很简单的接口,以供开发人员进行Document的添加:public void addDocument(Document doc)public void addDocument(Document doc, Analyzer analyzer)在IndexWriter中,使用addDocument方法,就可以向索引中添加已经创建好的Document。在使用addDocument方法加入所有的Document后,一定要使用IndexWriter的close方法来关闭索引器,使所有在I/O缓存中的数据都写入到磁盘上,关闭各种流。3)索引的读取工具IndexReader在Lucene的index包中,有一个很重要的工具IndexReader。它主要负责对索引的各种读取和维护工作。如打开一个索引、取得索引中的某个文档、获得索引中的总文档数量,甚至使从索引中删除某个文档。IndexReader有一个Document(int)方法,这个方法就是从索引中取出相应的Document。这里Document(int)的参数是一个int型的数字,这个数字代表的是Document在索引中的ID号。当Document被加入索引后,Lucene就会为其分配一个ID号,在索引的不断变更过程中,这个ID号可能发生改变。3.8.4 Lucene的搜索Lucene里与搜索相关的API多数都被包含在org.apache.lucene.search包中,其中最重要的是IndexSearcher类。在Lucene中,所有与搜索相关的操作都需要用到这个类。IndexSearcher在执行任何操作前,必须获得一个索引目录,然后使用IndexSearcher的search方法对索引进行检索。事实上,IndexSearcher有多种重载的search方法。其中返回Hits型的对象的一组方法比较容易理解,它们通过一个Query对象,在索引中检索相关文档,并返回检索的结果。方法如下:public Hits search(Query query)public Hits search(Query query ,Filter filter)public Hits search(Query query ,Sort sort)public Hits search(Query query ,Filter filter ,Sort sort)其中涉及了几个类:l Query:表示一次查询。l Hits:表示一次查询的结果。l Filter:表示对索引中文档集合的过滤器,它使检索在某个文档集合的子集中进行。l Sort:对索引的结果进行排序的工具。3.9 Heritrix简介Lucene很强大,但是,无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。由于爬虫的存在,才使得搜索引擎有了丰富的资源。Heritrix是一个由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件, 来实现自己的抓取逻辑。Heritrix来自于/。3.9.1它的执行是递归进行的,主要有以下几步:(1)在预定的URI中选择一个;(2)获取URI ;(3)分析,归档结果;(4)选择已经发现的感兴趣的URI,加入预定队列;(5)标记已经处理过的URI。3.9.2 Heritrix的几个主要组件如下:(1)抓取任务CrawlOrder:这个类是整个抓取任务的起点。CrawlOrder继承自一系列与属性设置相关的基类。(2)中央控制器CrawlController:中央控制器是一次抓取任务中的核心组件。它将决定整个抓取任务的开始和结束。(3)Frontier链接制造工厂:为线程提供链接的工具,它通过一些特定的算法来决定哪个链接下来将被送入处理链中,同时它本身也负责一定的日志和状态报告功能。(4)用Berkeley DB实现的BdbFrontier:Berkeley DB是一个HashTable,它能够按“key/value”方式来保存数据。BdbFrontier就是Heritrix中使用了Berkely DB的链接制造工厂,主要使用BdbUriUniqFilter来判断当前要进入等待队列的链接对象是否已经被抓取过。同时它还使用了BdbMultipleWorkQueues作为所有等待处理的URI的容器。(5)Heritrix的多线程ToeThread和ToePool:想要更有效更快速的抓取网页内容,就必须采用多线程。Heritrix中提供了一个标准的线程池ToePool,它用于管理所有的抓取线程。(6)处理链和Processer:处理链包括PreProcessor、Fetcher、Extractor、Writer、PostProcessor。3.10网络爬虫模块设计搜索引擎的后台需要有网络爬虫Sprider的支援。因为由于爬虫的存在,才使得搜索引擎有了丰富的资源。在搜索引擎的开发过程中,使用一个合适的爬虫来获取所需要的网页信息是第一步,这一步是整个系统成功的基础。选择了新浪游戏、17173、迅雷游戏这三个网站进行抓取,选择这几个网站的依据是:(1)网站能够被Heritrix爬虫抓取,只抓取允许被抓的网站;(2)这几个网站对搜索引擎比较友好,比较方便抓取;(3)这几个网站的信息比较全,访问量也大,是非常好的信息来源。图3.5 新浪游戏频道截图图3.6 17173游戏网站截图图3.7 迅雷游戏频道截图抓取任务设计:设计完抓取逻辑就需要新建一个抓取任务来执行网页的抓取,在Eclipse开发环境下配置好Heritrix工程环境。将自定义的包名加入到Heritrix工程目录下文件中。创建抓取任务,将抓取清单加入到种子列表中,如图(1)登陆后的界面图3.8 Heritrix登陆后的界面截图(2)建立抓取新浪游戏任务界面图3.9 Heritrix建立抓取新浪任务的截图(3)点击文本域下方的“Modules”按钮,对抓取任务的处理链进行配置图3.10 Heritrix抓取任务配置图1图3.11 Heritrix抓取任务配置图2(4)开始抓取任务后的界面图3.12 Heritrix抓取任务时的界面(5)任务完成后的界面图3.13 Heritrix抓取任务完成后的截图(6)在本地硬盘上看到刚刚抓取下来的网页图3.14抓取的网站都被保存到本地的截图3.11网页解析模块设计该模块是区别于垂直搜索与通用搜索的一个重要模块, 其主要负责对抓取下来的网页中的所需要的数据进行抽取与结构化。经分析,一个游戏页面应包含几个字段:原网页的URL地址、游戏的标题等内容。我们设计游戏信息抽取类SinaGameExtract、NewGameExtract和XunleiGameExtract,这些类继承自HTMLParser 中的基类Extractor,实现了其extract 方法,通过结合正则表达式与HTMLParser 最终将网页中的新闻信息,按照上面分析的几个字段抽取出来,并存储在各个不同的文本文件中,以供后续处理。3.11.1基类设计在基类Extractor中,设计了几个公用方法,如递归遍历一个目录、复制图片和正则匹配等,还有一个抽象方法extract(),它主要提供子类实现对不同格式的页面的解析。基类的属性和方法比较多,这里列出它的字段摘要和方法摘要,见表3-2和表3-3。表3-2 字段摘要字段名类型说明NEWLINEp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版三年级语文下册《口语交际:春游去哪儿玩》示范教学课件
- 教育孩子心得体会模版
- 2024年天文知识竞赛教学总结模版
- 北魏政治和北方民族大交融教学设计
- 11《我是一只小虫子》(课件)
- 文博会新质生产力
- 大学生职业规划大赛《广播电视学专业》生涯发展展示
- 餐厅管理员述职报告
- 慢性淋病的临床护理
- 学前儿童发展 课件 第8-12章 学前儿童思维的发展-学前儿童社会性的发展
- 2024年《体育基础理论》考试题库(含答案)
- CJJ 33-2005城镇燃气输配工程施工与验收规范
- 《市场营销:网络时代的超越竞争》第4版 课件 第9章 通过构建渠道网络传递顾客价值
- 农民工工资代付款方协议模板
- 药物合成反应-9合成设计原理
- 跨学科阅读纲要智慧树知到期末考试答案章节答案2024年山东师范大学
- 2025届湖南省数学高一下期末学业水平测试试题含解析
- 哮病-《中医内科学》教案
- 《阵列式消声器技术要求》(T-CAEPI 17-2019)
- 起重工属具安全使用规范课件
- 社区警务工作培训
评论
0/150
提交评论