1、 江汉大学本科毕业论文(设计)I全文搜索引擎的设计与实现作者声明本人郑重声明:所呈交的学位论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全了解有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理机构送交论文的复印件和电子版。同意省级优秀学位论文评选机构将本学位论文通过影印、缩印、扫描等方式进行保存、摘编或汇编;同意本论文被编入有关数据库进行检索和查阅。本学位论文内容不涉及国家机密。论文题目:全文搜索引擎的设计与实现作者单位:江汉大学数学与计算机科学学院作者签名:XXX 2013 年
2、 5 月 20 日江汉大学本科毕业论文(设计)II学 士 学 位 论 文论 文 题 目 全 文 搜 索 引 擎 的 设 计 与 实 现 (英 文) Full-text search engine design and Implementation 学 院 数学与计算机科学学院专 业 计算机科学与技术 班 级 B09082021 姓 名 XXX 学 号 200708202137 指导老师 YYY 2013 年 5 月 20 日江汉大学本科毕业论文(设计)III摘要目前定制和维护搜索引擎的需求越来越大,对于处理庞大的网络数据,如何有效的去存储它并访问到我们需要的信息,变得尤为重要。Web 搜索引擎
3、能有很好的帮助我们解决这一问题。本文阐述了一个全文搜索引擎的原理及其设计和实现过程。该系统采用 B/S 模式的Java Web 平台架构实现,采用 Nutch 相关框架,包括 Nutch,Solr,Hadoop,以及Nutch 的基础框架 Lucene 对全网信息的采集和检索。文中阐述了 Nutch 相关框架的背景,基础原理和应用。Nutch 相关框架的出现,使得在 java 平台上构建个性化搜索引擎成为一件简单又可靠的事情。Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web 搜索引擎。目前国内有很多大公司,比如百度、雅虎,都在使用 Nutch 相关框架。由于 Nut
4、ch 是开源的,阅读其源代码,可以让我们对搜索引擎实现有更加深刻的感受,并且能够更加深度的定制需要的搜索引擎实现细节。本文首先介绍了课题研究背景,然后对系统涉及到的理论知识,框架的相关理论做了详细说明,最后按照软件工程的开发方法逐步实现系统功能。关键词Nutch、Solr、Hadoop、Lucene、搜索引擎江汉大学本科毕业论文(设计)IVAbstractCurrently, the requirement of customizing and the search engine maintenance is larger and larger. For dealing with such e
5、normous network data, especially, how to store it and access our necessary information has become so significant. However,web search engine can help us to solve this problem well.This acticle describes the principle of full-text search engine,and the process for its design and implementation. This s
6、ystem adopts Java Web platform with B/S model, and also the relative frame of Nutch, including Nutch,Solr,Hadoop, and collection and inspection for whole network information based on Lucene-the foundation of Nutch. All in all, this text mainly elaborates the backgroud of relative frame,basical princ
7、iple, and application for Nutch.The appearance of Nutch related framework, makes that building an personalized search engine based on Java platform to be an simple and reliable way. Nutch is committed to make everyone configure a word-class web search engine easily and low-costly.At present, there a
8、re many big companies at home, like baidu, yahoo, are using such Nutch relative frame. Due to the fact that Nutch is open-source, reading its source code can let us have a more profound experience when realizing thesearch engine, and at the same time, can custojmize the needed details for realizing
9、the seach engine deeply. At frist, this article introduces the background of research project. Then, it specifically describes the theoretical knowledge of system and the related theory of framework. Finally, it achieves the system function step by step according to the development method of softwar
10、e engineering.KeywordsNutch、Solr、Hadoop、Lucene、Search Engine江汉大学本科毕业论文(设计)V目录1 绪论 .11.1 课题背景及介绍 .11.2 课题研究目的及应用 .11.3 课题研究范围 .11.4 小结 .22 搜索引擎相关理论研究 .32.1 WEB搜索引擎原理和结构 .32.1.1 搜索引擎三段式工作流程 .32.1.2 搜索引擎整体结构 .42.2 网页收集 .52.1.2 爬虫的工作流程 .52.1.3 爬虫的抓取策略 .52.1.4 链接数据库的建立 .62.1.5 链接数据库的更新 .62.3 网页预处理 .62.3.
11、1 建立索引页面库 .72.3.2 分词 .92.3.3 倒排索引 .102.4 查询服务 .122.4.1 查询方式和匹配 .122.4.2 结果排序 .132.4.3 文档摘要 .142.5 小结 .153 NUTCH 相关框架研究 .163.1 LUCENE研究 .163.1.1 Lucene 概述 .163.1.2 Lucene 如何对索引进行搜索 .163.1.3 Lucene 增删改索引的 API.173.2 NUTCH研究 .213.2.1 Nutch 概述 .213.2.2 研究 Nutch 的原因 .213.2.3 研究 Nutch 的目标 .223.2.4 Nutch 和
12、Lucene 比较 .223.2.5 Nutch 常用命令 .223.3 SOLR研究 .283.3.1 Solr 概述 .283.3.2 Solr 索引 .28江汉大学本科毕业论文(设计)VI3.3.3 Solr 搜索 .293.3.4 Lucene 索引查看工具 Luke.313.4 HADOOP研究 .323.4.1 Hadoop 概述 .323.4.2 Hadoop 单机本地模式 .343.4.3 Hadoop 单机伪分布式模式 .343.5 小结 .364 全文搜索引擎系统分析与技术选型 .374.1 系统目标需求 .374.2 系统功能项 .374.3 可行性分析与决策 .374.
13、3.1 技术可行性 .384.3.2 经济可行性 .384.4 小结 .395 全文搜索引擎系统设计与实现 .405.1 系统功能图 .405.2 系统实体设计 .405.2.1 实体 .405.2.2 实体的属性 .415.2.3 实体间的联系 .425.3 系统实现 .425.3.1 系统需要的环境 .425.3.2 系统中 Nutch 的配置 .435.3.3 对整个网络进行抓取 .445.3.4 Solr 安装配置和使用 .475.3.5 给 Solr 4.2 添加 mmseg4j .485.3.6 客户端应用程序的实现 .495.4 小结 .566 全文搜索引擎系统评价 .576.1
14、 系统特色 .576.2 系统存在的不足和解决方案 .576.2.1 系统存在的不足 .576.2.2 改进措施 .586.2.3 毕业设计心得与收获 .587 结束语 .59致谢 .60参考文献 .61江汉大学本科毕业论文(设计)11 绪论1.1 课题背景及介绍随着互联网的快速发展,越来越丰富的信息呈现在用户面前,但同时伴随的问题是用户越来越难以获得其最需要的信息。为了解决此问题,出现了网络搜索引擎。网络搜索引擎中以基于 WWW 的搜索引擎应用范围最为广泛。网络搜索引擎是指对 WWW 站点资源和其它资源进行索引和检索的一类检索机制。 全文搜索引擎是目前最为普及的应用 ,通过从互联网上提取各个
15、网站的信息(以网页文字为主)建立数据库,用户查询的时候便在数据库中检索与用户查询条件相匹配的记录,最终将匹配的那些记录,按一定的排列顺序显示给用户。国外具代表性的全文检索搜索引擎有 Google、 Yahoo、 Bing 等 ,国内著名的有百度、中搜等。目前网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情。建立搜索引擎就是解决这个问题的最好方法之一。该课题要求设计一个 Web 应用程序,学习搜索引擎的基本原理和设计方法,应用开源的全文搜索引擎 Lucene 框架和 Lucene的子项目 Nutch 实现一个全文搜索引擎。1.2 课题研究目的及应用针对搜索引擎广阔的应用前景以及分析
16、国内外搜索引擎的发展现状,根据搜索引擎系统的工作原理设计一种基于 Internet 的全文搜索引擎模型,它从互联网上获取网页,建立索引数据库,并采用数据库管理作业和多线程技术以提高全文搜索的性能和效率,从技术上可以适用于任何有全文搜索需求的应用。1.3 课题研究范围一般来说搜索引擎都由:用户接口,搜索器,索引生成器和查询处理器 4 个部分组成。 用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。主要的目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、及时的信息。用户接口的设计和实现使用人机交互的理论和方法,以充分适应人类的思维习惯。 江汉大学本科毕业论文(设计
17、)2搜索器用于 WWW 的遍历和网页的下载。从一个起始 URL 集合开始,顺着这些 URL中的超链(Hyperlink),以宽度优先、深度优先或启发式方式循环地在互联网中发现信息。 索引生成器对搜索器收集到的网页和相关的描述信息经索引组织后存储在索引库中。 查询处理器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价, 对将要输出的结果进行排序,并实现某种用户相关性反馈机制。1.4 小结本章内容主要介绍了课题背景,课题目的,及课题的研究方法与内容这些方面。阐述了搜索引擎在显示应用中的重要性,目前全文搜索引擎的工作组成部分以及各个工作组成部分到底是什么。下面将具体介绍全文搜
18、索引擎的相关理论,使读者全文搜索引擎的基本技术有所了解,为后续章节的阅读打下基础。江汉大学本科毕业论文(设计)32 搜索引擎相关理论研究2.1 Web 搜索引擎原理和结构全文搜索引擎是一款网络应用软件系统,论文中全部以搜索引擎称。最基本的搜索引擎应该包含三个模块:网页搜集,预处理,查询服务。事实上,这三个部分是相互独立、分别工作的,主要的关系体现在前一部分得到的数据结果为后一部分提供原始数据。2.1.1 搜索引擎三段式工作流程三者的关系如图 2-1:图 2-1 搜索引擎三段式工作流程在介绍搜索引擎的整体结构之前,现在借鉴计算机网络自顶向下的方法描述因特网特色一书的叙事方法,从普通用户使用搜索引
19、擎的角度来介绍搜索引擎的具体工作流程。自顶向下的方法描述搜索引擎执行过程:1用户通过浏览器提交查询的词或者短语 P,搜索引擎根据用户的查询返回匹配的网页信息列表 L;2. 上述过程涉及到两个问题,如何匹配用户的查询以及网页信息列表从何而来,根据什么而排序?用户的查询 P 经过分词器被切割成小词组 并被剔除停用词 ( 的、了、啊等字 ),根据系统维护的一个倒排索引可以查询某个词 pi 在哪些网页中出现过,匹配那些 都出现的网页集即可作为初始结果,更进一步,返回的初始网页集通过计算与查询词的相关度从而得到网页排名,即 Page 江汉大学本科毕业论文(设计)4Rank,按照网页的排名顺序即可得到最终
20、的网页列表;3. 假设分词器和网页排名的计算公式都是既定的,那么倒排索引以及原始网页集从何而来?原始网页集在之前的数据流程的介绍中,可以得知是由爬虫 spider 爬取网页并且保存在本地的,而倒排索引,即词组到网页的映射表是建立在正排索引的基础上的,后者是分析了网页的内容并对其内容进行分词后,得到的网页到词组的映射表,将正排索引倒置即可得到倒排索引;4. 网页的分析具体做什么呢?由于爬虫收集来的原始网页中包含很多信息,比如 html 表单以及一些垃圾信息比如广告,网页分析去除这些信息,并抽取其中的正文信息作为后续的基础数据。2.1.2 搜索引擎整体结构图 2-2 搜索引擎整体结构爬虫从 Internet 中爬取众多的网页作为原始网页库存储于本地,然后网页分析器抽取网页中的主题内容交给分词器进行分词,得到的结果用索引器建立正排和倒排索引,这样就得到了索引数据库,用户查询时,在通过分词器切割输入的查询词组并通过检索器在索引数据库中进行查询,得到的结果返回给用户。