收藏 分享(赏)

游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc

上传人:wo7103235 文档编号:6264626 上传时间:2019-04-03 格式:DOC 页数:46 大小:1.25MB
下载 相关 举报
游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc_第1页
第1页 / 共46页
游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc_第2页
第2页 / 共46页
游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc_第3页
第3页 / 共46页
游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc_第4页
第4页 / 共46页
游戏搜索引擎 搜索引擎DEMO系统中Lucene索引的实现.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、本 科 毕 业 论 文题目:游戏搜索引擎-搜索引擎 DEMO 系统中 Lucene 索引的实现Theme: Game Search Engine-Explore and Research SearchEngine based on game姓 名: 学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月摘 要网络中的资源非常丰富,但是如何有效的搜索信息是一件很困难的事情。建立搜索引擎是解决问题的最好方法。本文通过讲解如何使用 Heritrix 和Lucene,Web 开发,逐步地带领读者亲手构建搜索引擎网站。为了深刻的理解这些技术,本人还实现了一个自己的搜索引擎游戏搜索

2、引擎。游戏搜索引擎是一个基于游戏产业的搜索引擎。游戏搜索引擎由三大部分组成:抓 取 系 统 , 索 引系 统 和 搜 索 系 统 。 抓 取 系 统 , 其 实 也 就 是 网 络 爬 虫 , 负 责 从 指 定 的 WEB 页面 按 照 超 连 接 进 行 解 析 、 抓 取 数 据 , 为 后 续 阶 段 提 供 数 据 ; 索 引 系 统 , 把抓 来 的 信 息 建 立 类 似 书 目 的 数 据 文 件 , 以 便 于 实 现 高 速 检 索 ; 搜 索 系 统 ,就 是 以 WEB 的 形 式 为 用 户 提 供 检 索 的 功 能 。本 设 计 使 用 MyEclipse 开 发

3、 工 具 在 网 络 上 搭 建 一 个 为 用 户 提 供 查 询 游 戏信 息 的 web 网 站 。 论 文 首 先 介 绍 了 搜 索 引 擎 的 相 关 知 识 , 以 及 系 统 设 计 所 使用 到 的 技 术 原 理 和 工 具 。 在 系 统 的 总 体 设 计 中 描 述 了 系 统 的 主 要 功 能 模 块 ,以 及 各 个 模 块 的 一 些 相 关 的 知 识 , 如 如 何 使 用 Heritrix 来 抓 取 网 页 等 。 在详 细 设 计 中 具 体 描 述 了 各 个 子 模 块 的 功 能 , 以 及 这 些 模 块 的 构 建 , 基 本 上 包含 了

4、 一 个 搜 索 引 擎 的 开 发 流 程 。 之 后 , 给 出 了 系 统 的 运 行 结 果 系 统 的 欢迎 界 面 、 关 键 字 提 示 信 息 和 系 统 的 检 索 结 果 。 论 文 在 最 后 做 出 了 设 计 的 总 结 ,并 列 出 了 参 考 资 料 。关键词:搜索引擎;H eritrixAbstractResources is very rich in network, but how to effectively search information is a very difficult task. The establishment of a search

5、 engine is the best way to solve the problem. In this paper, on the use of Heritrix and Lucene, Web development, leading the reader step by step to building a search engine site personally. In order to deeply understand the technology, I also realized its own search engine - game search engine. Game

6、 search engine is a search engine based on the game industry. Game search engine has three major components: system crawling, indexing and search system. The crawling system is, in fact, is the network of reptiles, is responsible for the WEB page from the specified connection in accordance with the

7、super-resolution, crawl data, provide data for follow-up phase; index system to bibliographic information of the establishment of similar data files in order to achieve high-speed retrieval; search system, the form of WEB is to provide users with search function.The MyEclipse development tools desig

8、ned for use on the network built to provide users with a query of the web site the game information. Paper first introduced the relevance of search engine knowledge, and system design technology used in the principles and tools. In the system described in the overall design of the main functions of

9、the system modules, each module as well as some relevant knowledge, such as how to use Heritrix to crawl web pages. In the detailed description of the design of the specific functions of the various sub-modules, as well as the construction of these modules, basically includes a search engines develo

10、pment process. After the system is given the results - the system welcomes the interface, keyword information and the system prompts the search results. Paper made in the final summary of the design, and a list of references.Key words:search engine; Heritrix目录第一章 引言 .1第二章 系统的总体设计 .22.1 项目简介 .22.1.1

11、需求分析 22.1.2 技术实现要点 22.1.3 运行环境 32.2 系统模块结构 .32.2.1 系统总体结构模块图 .32.2.2 网页抓取模块 .32.2.3 建立索引和数据库模块 .82.2.4 游戏产品查询模块 .82.3 系统模块数据流图 .9第三章 系统的详细设计 103.1 网页抓取模块设计 103.1.1 选择网站 103.1.2 分析网站内容 103.1.3 开发抓取所需的定制类 123.1.4 开始抓取 133.2 建立索引和数据库模块设计 143.2.1 创建 myeclipse 工程 143.2.2 设定配置文件 163.2.3 数据库和索引结构设计 173.2.4

12、 数据库处理和索引处理 183.2.5 网页解析及数据处理 183.3 游戏查询模块设计 203.3.1 为工程添加 WebWork 配置文件 203.3.2 为工程创建后台处理类 223.3.3 为工程创建 JSP 前台页面 23第四章 系统的运行结果 25结束语 .28致谢 .29参考文献 .30附录 .31CONTENTSChapter 1 Preface .1Chapter 2 System General Design .22.1 Project Brief Introduction.22.1.1 Require Analysis .22.1.2 Kernel Technology

13、22.1.3 Runtime Condition 32.2 System Module Structure32.2.1 System Module Structure Chart 32.2.2 Crawling Module 32.2.3 Index And Database Module 82.2.4 Game Query Module 82.3 System Module DataStream Chart.9Chapter 3 System Particular Design .103.1 Crawing Module Design.103.1.1 Select WebSite 103.1

14、.2 Analyse Page 103.1.3 Class For Analysis 123.1.4 Start Crawling 133.2 Index And Database Module Design143.2.1 Establish MyEclipse Project .143.2.2 Configuration .163.2.3 Struture of Index and Database 173.2.4 Index and Database Operation 183.2.5 Analyse webfile and Data dealing 183.3 Game Query Mo

15、dule Design203.3.1 WebWork Configuration .203.3.2 Action Class 223.3.3 JSP Page 23Chapter 4 Runtime Result .25Summary 28Thanks .29Bibliography .30Appendix .31游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现1第一章 引言面对浩瀚的网络资源,每个人都希望能尽快找到自己想要的东西,但是网络资源太多,通过人工浏览的方法根本是不可能的,搜索引擎很好的解决了这个问题。可以这样说,现在上网除了 e-mail 外,用的最广的就是搜索引

16、擎了。搜索引擎应人们的迫切需求出现以后经历了从简单的机器人搜索软件,独立搜索引擎到专业搜索引擎,元搜索引擎的发展历程成为人们寻找信息不可或缺的工具。搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。因此它也成为除了电子邮件以外最多人使用的网上服务。但是,由于通用搜索引擎查找之后的信息不准确、查找深度不够,对于某一特定领域的或某一特定需求的人群,它提供的查询结果不符合他们的要求。于是便出现了具有行业色彩的新的搜索引擎服务模式垂直搜索引擎,它相对于通用搜索引擎来说,具有更加专注、具体和深入。垂 直 搜 索 和 目 前 的 googl

17、e,baidu 等 通 用 搜 索 从 定 位 , 内 容 , 用 户 , 市 场策 略 等 都 是 不 同 的 。 用 户 使 用 google,baidu 等 通 用 搜 索 引 擎 的 方 式 是 通 过关 键 字 的 方 式 实 现 的 , 是 语 义 上 的 搜 索 , 返 回 的 结 果 倾 向 于 知 识 成 果 , 比 如文 章 , 论 文 , 新 闻 等 ; 垂 直 搜 索 也 是 提 供 关 键 字 来 进 行 搜 索 的 , 但 被 放 到 了一 个 行 业 知 识 的 上 下 文 中 , 返 回 的 结 果 更 倾 向 于 信 息 , 消 息 , 条 目 等 。如今,中

18、国网络游戏蓬勃发展,目前有几百款网络游戏在中国运营,从事游戏开发和运营的公司、游戏玩家数量越来越多,游戏产业、游戏周边产业从无到有,游戏产品和游戏产业的社会影响力越来越大。但是,面对浩瀚的、各种各样的游戏,如何有效的搜索信息却是一件非常困难的事情,建立搜索引擎是解决这个问题的最好方法。本人通过构建一个游戏产业的垂直搜索引擎,来向大家演示一个属于自己的搜索引擎的构建。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现2第二章 系统的总体设计2.1 项目简介2.1.1 需求分析开发游戏行业的具有全文检索的垂直搜索引擎系统。采用 Heritrix 网络爬虫和 Lucene 搜索引擎开

19、发工具进行搜索,完成一个游戏行业的垂直搜索引擎,根据收录的及格信息格式相对单一的垂直门户和论坛,通过分析工具分析其信息特点和关键词分布状况,然后基于现有的信息格式建立索引库,以及相应的数据库。用户通过网页的方式查询,查询后的结果也以网页的方式显示。做这个项目的目的是为了掌握和了解小规模搜索引擎技术,了解垂直搜索引擎的发展情况,垂直搜索引擎和百度 Google 等综合搜索引擎相比起来,具有面向特定领域或对象、面向特定需求、全面、深入、准确、及时和机构化等特点,有它一定的存在价值和发展前景,这个项目对我们以后从事此项领域也是个很好的锻炼和学习。2.1.2 技术实现要点 通过 Heritrix 抓取

20、网页文件Heritrix 是 一 个 爬 虫 框 架 , 可 加 如 入 一 些 可 互 换 的 组 件 。 它 的 执 行 是 递归 进 行 的 , 主 要 有 以 下 几 步 : 1、 在 预 定 的 URI 中 选 择 一 个 。 2、 获 取 URI。 3、 分 析 , 归 档 结 果 。 4、 选 择 已 经 发 现 的 感 兴 趣 的 URI, 加 入 预 定 队 列 。5、 标 记 已 经 处 理 过 的 URI。 在 Heritrix 抓 取 页 面 中 可 设 置 各 种 处 理 链 , 并将 抓 取 结 果 的 镜 象 文 件 存 放 于 硬 盘 中 。 使用 Lucene

21、 将网页生成索引文件Lucene 不是一个完整的全文索引应用,而是一个用 Java 写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。Lucene 在不断创建新的索引文件的同时,并且定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整) ,这样在不游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现3影响检索的效率的前提下,提高了索引的效率。2.1.3 运行环境 采用 B/S 结构 客户端:无要求 硬件:内存 512M,奔腾处理器,硬盘 80G 操作系统平台:WINDOWS 操作系统 数据库:MYSQL WEB

22、 服务器:TOMCAT 5.x 浏览器:IE 5.0 以上 开发工具:MYECLIPSE 6.0,Dreamwear,Photoshop2.2 系统模块结构2.2.1 系统总体结构模块图如图 2-1 所示:游戏搜索引擎 Soyou网页抓取模块建立索引和数据库模块游戏产品查询模块图 2-1 总体结构模块图2.2.2 网页抓取模块网页抓取模块的功能:主要负责从网络上抓取需要的资源。由于 Heritrix的扩展性良好,我们可以扩展它的各个组件,来实现我们抓取网页的抓取逻辑。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现4要运行 Heritrix,必须进行一些相关的配置。配置好后,

23、可以通过 Heritrix 的WEBUI 界面,来建立抓取网页的任务。Heritrix 的主类为 org.archive.crawler. Heritrix,运行它,就可以启动Heritrix。然后通过浏览器访问 http:/localhost:8080,就可以打开Heritrix 的 WEBUI 界面了。下图为登陆后的界面:图 2-2 登陆后的界面在该界面中央有一道状态栏,用于标识当前正在运行的抓取任务。单击 WEBUI 菜单栏上的“jobs”标签,就可以进入任务创建页面了,在创建页面中有 4 种创建任务的方式:Based on existing job、Based on a recover

24、y、Based on a profile、With defaults,我们使用最简单的 With defaults 来生成一个任务,单击 With defaults 连接,创建一个新的抓取任务,如图 2-3 所示。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现5图 2-3 新的抓取任务从图 2-3 中可以看到一排按钮,单击“Modules”按钮,就进入配置抓取时处理链的页面,如图 2-4 所示。从图中可以看到需要配置的内容共有 7 项,其中 CrawlScope 和 Frontier 是两个最重要的组件。CrawlScope 用于配置当前应该在什么范围抓取网页连接。Fron

25、tier 是一个 URL 的处理器,它决定下一个被处理的 URL 是什么。同时,它还会将经由处理器链解析出来的 URL 加入到等待处理的队列中去。PreProcessor 是整个处理链的入口,在这个队列中,所有的处理器都是用来对抓取时的一些先决条件进行判断。Fetcher 用于解析网络传输协议,比如 DNS、HTTP 等。Extractor 主要用于解析当前获取的服务器返回内容,这些内容通常都是以字符串形式缓存的。在这个队列中,包括了一系列的工具,如解析 HTML、CSS 等。解析完毕,取出页面中的 URL,将它们放入队列中,等待下次抓取。我们可扩展游戏搜索引擎 搜索引擎 DEMO 系统中 L

26、ucene 索引的实现6该类,实现我们的抓取目标。Writer 用于将抓取到的信息写入到磁盘中,通常采用镜象方式写入。PostProcessor 在整个抓取解析过程结束后,进行一些扫尾工作。需要特别注意的是,在处理链的设置过程中,每个队列的处理器都是要分先后顺序的,信息的处理流程是不可逆的。图 2-4 配置处理链的页面在设置完处理链后,在页面顶部后底部都可以找到如图 2-5 所示的菜单项,单击“settings”连接,就进入了设置属性的页面。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现7图 2-5 进入“settings”在使用 Heritrix 时,所需要设置的参数并不

27、多,以默认设置为主。真正需要设置的是 http-headers,图 2-6 和图 2-7 分别为默认设置和正确配置。图 2-6 默认的设置图 2-7 正确的设置其中, “VERSION”需要被替换成 Heritrix 的版本信息,“PROJECT_URL_HERE”替换成一个完整的 URL 地址即可, “from”属性中只要是格式正确的邮件地址就可以。处理链设置完后,单击图 2-8 中“Submit job”连接后。回到“Console”界面,单击“Start”连接,就可以开始抓取任务了,抓取过程如图 2-9 所示。图 2-8 提交任务“Sumbit job”游戏搜索引擎 搜索引擎 DEMO

28、系统中 Lucene 索引的实现8图 2-9 抓取任务开始抓取任务完成后,就进入索引和数据库的建立阶段了。2.2.3 建立索引和数据库模块在该模块中,使用 Lucene 索引工具来建立索引文件。建立索引和数据库模块的功能:主要是对前期网络爬虫抓取的信息进行提取,进而分析网页里的游戏信息,建立索引文件和相关的游戏信息的数据库内容。在该模块中,很重要的内容就是使用 HTMLParser 来从复杂的 HTML 页面中解析出需要的文本信息。从网页中提取信息,有两种方法使用正则表达式或HTMLParser 工具包。正则表达式通过自定义的正则模式去精确地提取文本信息,但需要写大量的正则表达式,对于不熟悉正

29、则表达式的我们来说,编写和调试正则表达式是一个繁琐的过程。而 HTMLParser 提供了提取文本信息的 API,我们只需要通过这写 API 就可以很方便的提取特定文本,极大地提高了工作效率。2.2.4 游戏产品查询模块在经过了复杂的资源处理后,就有了一个拥有众多产品的数据库和 Lucene游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现9索引。现在需要的就是搭建一个合理的 WEB 平台,将其构建成一个真正的基于WEB 的搜索引擎。游戏产品查询模块就是负责完成这项任务的。整个 WEB 系统是由 WEBWORK + JDBC 来实现的,并且具有分页功能。2.3 系统模块数据流图

30、如下图所示为系统的数据流图:网页抓取模块建立索引和数据库模块游戏产品查询模块搜索结果页面显示网页镜象文件数据库索引文件图 2-10 系统模块数据流图构建一个游戏搜索引擎程序,必须经历的 3 个步骤:1.先从网页抓取模块抓取网页,生成网页镜象文件,或者是网页压缩文件。2.建立索引和数据库模块,从网页镜象文件或网页压缩文件中,提取产品信息,然后将这些产品信息存储到数据库,返回记录 ID 既主键,最后通过 Lucene索引工具将记录 ID 和产品信息一并生成索引文件。3.游戏产品查询模块则是通过 WEB 的方式,获取客户的查询关键字,也是通过 Lucene 索引工具检索索引文件,获取游戏信息记录在数

31、据库中的 ID,通过 ID获取游戏信息,并将这些信息显示在页面中。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现10第三章 系统的详细设计3.1 网页抓取模块设计3.1.1 选择网站在之前的总体设计中,介绍了如何使用 Heritrix 爬虫来创建抓取任务,在本章中将介绍在 Heritrix 中自定义抓取所需的类。在抓取前得先选择适合的网站进行抓取,从技术角度看,选择网站主要有以下几个依据: 网站能够被 Heritrix 爬虫抓取。因为有的网站使用了反爬虫技术,防止未经授权的爬虫 对网站进行抓取。 网站的信息不是使用 javascript 动态的生成的。由于 web2.0 方

32、式的普及,越来越多的网站使用 ajax 技术,利用 javascript 来动态生成内容。这种动态的内容需要在浏览器中运行生成,是爬虫无法获取得。 网站的页面结构不应当经常变化,最好是使用一种模板动态生成的。这样有利于分析网页,使用简单的方式来从网页中解析数据。3.1.2 分析网站内容在进行任何抓取前,都必须对所要抓取的内容进行详细的分析,了解它的基本结构,以确定种子,没有一款软件能够自动告诉用户网站的那些网页是需要抓取的,这一步是必须由人工来完成的,也是必须进行的一个步骤。网页抓取的一个原则就是在清单上的 URL 能够很方便的连接到所有具体的产品页面,当然也可以使用人工的方式获取所有的产品连

33、接,但这样做的工作量太大了,要降低工作量,那么方法就是找到一个或几个网页,在这些网页上可以获取所有产品的连接,将该网页抓取并分析,然后在取的所有产品的连接。这里以新浪网 的游戏产品信息为例,在抓取去游戏信息页面时,最好是能够找到一个包括其所有手机产品 URL 的页面。如图 3-1 所示。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现11图 3-1 新浪网的游戏资料库页面在这个页面上,点击每个游戏连接,都可以进入游戏产品的详细信息页面,如图 3-2 所示。因此,这样的页面就是我们所需要的页面,在这个页面上可以获取所有游戏的详细信息,我们只需要提供给爬虫这样的一个网页连接,就

34、可以收集到所有的产品的信息。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现12图 3-2 暗影狂奔的游戏页面3.1.3 开发抓取所需的定制类在得到了抓取清单的主页面后,就可以用 Heritrix 开始抓取了。很显然,使用现有的 Heritrix 的功能组件,还不能够完成抓取任务。我们的需要是:保存所有游戏信息的页面和不保存其他无关的页面。对于保存所有游戏信息的页面,这是 Heritrix 所自带的组件就可以实现的功能。而对于不保存其他无关的页面的内容,这点使用 Heritrix 组件是无法实现的,因为无论使用什么 Scope,总会保存与产品无关的网页。因此,需要扩展Heri

35、trix,以实现所需要的抓取,这种扩展实际上就是加入一种 URL 选择策略,将那些不需要的 URL 过滤掉,以保证所抓取的信息都是有用的信息。在这里,我们选择扩展 Extractor 来达到需要。SinaGameExtractor 类继承了 Extractor 类,并且实现了它的抽象方法extract()。在代码中,SinaGameExtractor 这个类是专门用来解析http:/ 这个页面的,该方法首先从获取得到网页的内容,游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现13然后通过 java 提供的正则表达式来匹配字符串,匹配之间的超连接并去除那些无关的超连接,然后对其

36、进行截取,并在前部加入http:/,加上这样的前缀就构成了一个完整的 URL,然后将构成的 URL 加入到待处理队列中,以等待 FrontierScheduler 的处理。3.1.4 开始抓取在抓取前,需要将 SinaGameExtractor 这个定制类加入到Processor.options 文件中,如图所示 3-3。图 3-3 添加自定义的 Extractor添加完成后,就可以开始进行抓取了。首先通过 Heritrix 的 WEBUI 创建JOB,并在任务处理链的 Moudules 中选择 SinaGameExtractor,置于ExtractorHTTP 后,如图 3-4 所示。图 3

37、-4 选择 SinaGameExtractor配置完成后,就可以开始网页的抓取了,抓取完成后,要验证 Extractor 是否解析成功,就需要查看任务运行后的镜象目录,看它是不是和我们设想的一样。该镜象目录在工程 HeritrixProject 的 jobs 目录下。如图 3-5 所示,这是任务运行完毕后的 mirror 目录。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现14图 3-5 任务运行完成后的镜象目录当抓取结束后,就需要对抓取下来的结果进行处理了。处理的过程主要包括:搭建 myeclipse 工程、解析网页内容并将所需要的信息保存、构建数据库处理类、构建索引处理

38、类等。3.2 建立索引和数据库模块设计3.2.1 创建 myeclipse 工程Myeclipse 的工程创建要考虑到两个因素: 在对抓取的网页做处理时,要能够与所要开发的搜索引擎共用同样的系统,这样可以节约开发时间和开发工作量,减少不必要的重复工作。因此,创建的工程是一个 web 类型的工程。 应将处理网页的系统代码与搜索引擎的系统代码分开来,以便开发的时候可以独立进行,降低系统的耦合度。因为创建的工程是 web 工程,必然要安装 tomcat 5.0,以确保程序的运行。首先,从网路上下载 tomcat 压缩包,然后将其解压至任一盘上即可。之后,便是配置 tomcat。打开 myeclips

39、e,在菜单栏中选择“Window-Perferences”命令,选中后会出现如图 3-6 所示的对话框。由于我将 tomcat 压缩包解压至 E:software 目录下,故属性设置页上的配置为 E:softwaretomcat5.5.17。这样,tomcat 就配置完成了,要验证 tomcat是不是安装成功,如图 3-7 所示,单击“start”按钮,运行 tomcat。然后在浏览器中输入 http:/localhost:8080,将出现如图 3-8 所示的界面,则表示tomcat 成功启动。Tomcat 配置完成后,就可以创建 web 工程了。游戏搜索引擎 搜索引擎 DEMO 系统中 Lu

40、cene 索引的实现15图 3-6 tomcat 属性设置图 3-7 tomcat 启动游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现16图 3-8 tomcat 启动成功界面3.2.2 设定配置文件工程结构创建好后,还不能马上开发对抓取结果进行处理的类。在这之前,需要先对整个应用中,要用到的系统变量进行设定。在 WEB-INF/src 目录下,添加 app.properties 属性文件,作为系统的外部配置文件。该属性文件的内容如下所示。# Database Settings#jdbc.url=jdbc:mysql:/localhost:3306/searchengine

41、?useUnicode=true&characterEncoding=gb2312&mysqlEncoding=gb2312jdbc.username=rootjdbc.password=# Index Settings#game.mirror.directory=D:workSpacejavaHeritrixProjectjobsgame.index.directory=F:searchEngineindexword.dictionary=F:searchEnginewordLib.txt游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现17系统属性配置文件主要包括两部分内容

42、,第一部分是数据库的配置部分,主要包括了数据连接字符串、数据库用户名和密码等信息;第二部分是搜索引擎的信息设定,属性包括了网页镜象文件的存放目录位置、索引文件的存放目录位置和游戏信息的词库。在该系统中使用 ResourceBundle 来加载 app.properties 文件。在系统中,将所有与获取配置信息相关的操作封装在 config.PropertyConfiguration 类中。使用静态初始化段方法来加载属性文件,然后定义多个静态方法,来从 bunldle对象中取出相应的属性值,从这些静态方法的名称中,可以辨认出它们所返回的属性值的含义,如 getDBUrl()返回的是数据连接字符串

43、。3.2.3 数据库和索引结构设计在网页抓取完成后,需要对网页信息进行解析,获取出网页内的游戏信息,并将其存储到数据库中,因此在此前必须在 mysql 数据库中创建一个数据库searchengine 和表 game。数据库结构很简单,只有一张表,主要就是用来存储游戏的各种信息。具体字段含义见表 3-1 所示。表 3-1 字段含义字段 描述id 主键gname 游戏名storeurl 该游戏的网页文件存放路径updatetime 最后更新时间数据库结构设计之后,在之前搭建好的工程中,定义一个 gameInfo 类作为装载数据的值对象,该类存储了在数据库中和索引中将要用到的信息。除了数据库结构设计

44、,还需要定义 Lucene 的 Document 格式。因此,设计了GameDocument 类,用它的静态方法来为一个 gameInfo 对象构建 Lucene 的Document。GameDocument 类中定义了一个静态方法来为传入的 gameInfo 对象构建了 3个 Field,这 3 个 Field 分别为 identifier、name、time。这三个 Field 与数据游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现18库中的内容有直接的对应关系,并且中间的 Field 则是为用户提供一个搜索时的默认 Field。由于 Lucene 提供的分词工具,还无法

45、添加“数字+英文字母”或“数字+中文”这样组合的新词。为了解决这种问题,我们将传入的 gameInfo 对象中的信息中的 0-9 的数字替换为中文繁体字的零到拾,以便能够被分词工具识别。3.2.4 数据库处理和索引处理之前已经对数据库和索引的结构进行了介绍,这里在介绍对数据库进行操作和索引操作的类分别为 GameJDBC 类和 GameIndexer 类。GameJDBC 类从其字面就可知道该类是用于系统中数据库处理操作的类。由于在搜索引擎中,数据库的处理相对较简单,采用了直接的 JDBC 方式来向数据库进行读写操作,方法分别为 addGameInfo 和getSearchResultById

46、。addGameInfo 方法用于向数据库中插入数据,它的参数为 gameInfo 对象,然后把当前插入的新记录的 ID 值返回给调用者,以便调用者可以将这个 ID 传到 Lucene 的索引中,以此将数据库记录和 Lucene 的索引对应起来。getSearchResultById 方法则是从数据库中读取数据,传递的参数是 int型的数字,然后从数据库中查询 ID 值为当前数字的记录,并返回该记录信息给调用者。GameIndexer 类是索引类,用于向 Lucene 中添加 Document。在 GameIndexer的初始化中,需要传递一个以字符串形式表示的索引文件存放目录位置的参数,该目

47、录信息可以从 PropertyConfuguration 类中获取得到,该构造函数中还实例化了一个 Lucene 的 Analyzer 对象,利用该 Analyzer 对象来初始化一个 Lucene的写入工具 IndexWriter。在 GameIndexer 类中,还有一个方法 addGame,这个方法的参数为 gameInfo 类型的对象,它将这个参数送到GameDocument.buildGameDocument 方法里进行处理,然后调用 IndexWriter 的addDocument 方法,把生成的游戏信息 gameInfo 加入到索引中。除此之外,该类还提供了 optimize 方

48、法和 close 方法来对索引进行优化和关闭索引。游戏搜索引擎 搜索引擎 DEMO 系统中 Lucene 索引的实现193.2.5 网页解析及数据处理配置文件、数据库处理操作类和索引类完成后,就应该着手处理抓取到的网页的内容了。在搜游系统中,使用 HTMLParser 这个工具来解析网页。在开始解析网页之前,我们有要了解 HTML 的一些基本知识。HTML 是 Hyper Text Markup Language 的简称,它是一种标记语言,语法易学难懂。而以 HTML语法编写的文件叫 HTML 文件,文件的扩展名为.htm 或.html。是 目 前 网 络 上 应用 最 为 广 泛 的 语 言

49、 , 也 是 构 成 网 页 文 档 的 主 要 语 言 ,H TML 文 本 是 由 HTML 命令 组 成 的 描 述 性 文 本 , HTML 命 令 可 以 说 明 文 字 图 形 、 动 画 、 声 音 、 表 格 、 连接 等 。 HTML 的 结 构 包 括 头 部 和 主 体 两 大 部 分 , 其 中 头 部 描 述 浏 览 器 所 需 的 信息 , 而 主 体 则 包 含 所 要 说 明 的 具 体 内 容 。 基 本 HTML 页 面 以 DOCTYPE 开 始 ,它 声 明 文 档 的 类 型 , 且 它 之 前 不 能 有 任 何 内 容 ( 包 括 换 行 符 和 空 格 ) , 否 则将

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报