搜索引擎优化毕业论文(——搜索引擎的研究与实现目录目录 )
优采云 发布时间: 2021-11-07 00:13搜索引擎优化毕业论文(——搜索引擎的研究与实现目录目录
)
——搜索引擎的研究与实现
搜索引擎的研究与实现
内容
目录 (1)
摘要 (3)
第一章介绍(4)
第 2 章搜索引擎的结构(5)
2.1 系统概述(5)
2.2 搜索引擎的组成(5)
2.2.1个互联网机器人(5)
2.2.2 索引和搜索(5)
2.2.3 网络服务器(6)
2.3 搜索引擎主要指标及分析(6)
2.4 节(6)
第三章网络机器人(7)
3.1什么是网络机器人(7)
3.2 网络机器人的结构分析(7)
3.2.1如何解析HTML(7)
3.2.2 Spider 程序结构(8)
3.2.3 如何构造Spider程序(9)
3.2.4 如何提高程序性能(11)
3.2.5 网络机器人代码解析(12)
3.3 节(14)
第4章基于LUCENE的索引和搜索(15)
4.1什么是LUCENE全文搜索(15)
4.2L UCENE原理解析(15)
4.2.1全文搜索的实现机制(15)
4.2.2 Lucene 索引效率(15)
4.2.3 中文分词机制(17)
4.3L UCENE和S PIDER的组合(18)
4.4 节(21)
第5章基于TOMCAT的WEB服务器(22)
5.1 什么是基于TO OMCAT的WEB服务器(22)
5.2用户界面设计(22)
5.3.1客户端设计(22)
5.3.2 服务器设计(23)
5.3将项目部署到 T OMCAT (25)
5.4节(25)
第6章搜索引擎策略(26)
6.1简介(26)
6.2 个面向主题的搜索策略 (26)
6.2.1 引导词 (26)
6.2.3权威网页和中心网页(27)
6.3 节(27)
参考文献 (28)
概括
网络中的资源非常丰富,但如何有效地搜索信息却是一件困难的事情。构建搜索引擎是解决这个问题的最好方法。本文首先详细介绍了基于互联网的搜索引擎的体系结构,然后从网络机器人、索引引擎、Web服务器三个方面进行了详细的讲解。为了对这项技术有更深入的了解,我还亲自实现了一个自己的新闻搜索引擎的搜索引擎。
新闻搜索引擎根据超链接对指定的网页进行解析和搜索,并将搜索到的每条新闻编入索引并添加到数据库中。然后,通过Web服务器接收到客户端的请求后,从索引数据库中搜索出匹配的新闻。
在介绍搜索引擎的章节中,我不仅详细阐述了技术核心,还结合新闻搜索引擎的实现代码进行了说明。这些图片有据可查,易于理解。
抽象的
互联网上的资源丰富,但要搜索一些有用的信息却是一件困难的工作。所以搜索引擎是解决这个问题的最好方法。本文首先详细介绍了基于Internet的搜索引擎的体系结构,然后从Spider搜索、引擎和Web服务器等方面进行了详细的说明。为了更深入地了解技术,我自己编写了一个新闻搜索引擎。
新闻搜索引擎根据来自指定网页的超链接进行解释和搜索,然后对每条搜索到的信息进行索引,并将其添加到索引数据库中。然后在收到来自Web服务器的客户请求后,很快从索引引擎中搜索到正确的消息,
在介绍搜索引擎的章节中,不仅阐述了核心技术,还结合了现代代码,附有图片,通俗易懂。
第一章介绍
面对海量的网络资源,搜索引擎为所有上网的用户提供了一个切入点。可以毫不夸张地说,所有用户都可以从搜索开始,到达互联网上任何他们想去的地方。因此,它已成为除电子邮件外最常用的在线服务。
随着WWW的发展,搜索引擎技术引人注目。搜索引擎经历了大约三代的更新和发展:
第一代搜索引擎出现在1994年,这类搜索引擎一般索引不到100万个网页,很少重新采集网页和刷新索引。而且检索速度很慢,一般要等10秒甚至更长时间。在实现技术上,基本采用了较为成熟的IR(Information Retrieval)、网络、数据库等技术,相当于现有的一些技术在WWW上实现的应用。从 1994 年 3 月到 4 月,网络爬虫 World Web Worm (WWWW) 平均每天收到大约 1,500 次查询。
1996 年出现的第二代搜索引擎系统大多采用分布式解决方案(多台微机协同工作),以增加数据量、响应速度和用户数量。他们通常维护大约 50,000,000 个网页的索引。该数据库每天可以响应 10,000 个用户搜索请求。1997 年 11 月,当时几个最先进的搜索引擎声称能够建立从 2,000,000 到 100,000 的网络索引。Altavista 搜索引擎声称他们每天收到大约 20,000 个查询。
在 2000 年的 2000 年搜索引擎大会上,根据总裁拉里佩奇的演讲,谷歌正在使用 3000 台运行 Linux 系统的个人计算机来采集网络上的网页,并以每天 30 台的速度将计算机添加到这个微型计算机集群中。跟上网络的发展步伐。每台电脑运行多个爬虫,以每秒100个网页的峰值速度采集网页,平均速度为每秒48.5个网页,一天可以采集超过400万个网页
搜索引擎这个词在*敏*感*词*互联网领域被广泛使用,但其含义不同。在美国,搜索引擎通常是指基于互联网的搜索引擎。他们通过网络机器人采集数千万到数亿的网页,每个词都被搜索引擎索引,这就是我们所说的全文搜索。著名的互联网搜索引擎包括First Search、Google、HotBot等。在中国,搜索引擎通常是指基于网站目录的搜索服务或特定于网站的搜索服务。我正在研究基于 Internet 的搜索技术。
第二章 搜索引擎的结构
2.1系统概述
搜索引擎是根据用户的查询请求,按照一定的算法从索引数据中查找信息并返回给用户。为了保证用户找到的信息的准确性和新鲜度,搜索引擎需要建立和维护一个庞大的索引数据库。一般的搜索引擎由网络机器人程序、索引和搜索程序、索引数据库组成。
系统*敏*感*词*
2.2 搜索引擎的组成
2.2.1个互联网机器人
网络机器人又称“蜘蛛”,是一款功能强大的WEB扫描程序。它可以在扫描WEB页面的同时检索其中的超链接,并加入扫描队列等待以后的扫描。由于超链接在WEB中应用广泛,一个Spider程序理论上可以访问整个WEB页面。
为了保证网络机器人遍历信息的广度和深度,需要设置一些重要的环节并制定相关的扫描策略。
2.2.2 索引和搜索
网络机器人将遍历过的页面存储在一个临时数据库中,直接通过SQL查询信息的速度会让人难以忍受。为了提高检索效率,需要建立索引并以倒排文件的形式存储。如果索引不是
如果您及时了解最新消息,用户将无法使用搜索引擎检索它们。
用户输入搜索条件后,搜索程序会在索引数据库中进行搜索,然后按照一定的策略对满足查询要求的数据库进行排序,返回给用户。
2.2.3 网络服务器
客户一般通过浏览器查询,这需要系统提供Web服务器并连接索引数据库。客户在浏览器中输入查询条件,Web服务器在收到客户的查询条件后,在索引数据库中查询并整理查询条件,然后返回给客户端。
2.3 搜索引擎主要指标及分析
搜索引擎的主要指标有响应时间、召回率、准确率、相关性等。这些指标决定了搜索引擎的技术指标。搜索引擎的技术指标决定了搜索引擎的评价指标。一个好的搜索引擎应该有更快的响应速度、高召回率和准确率。当然,这些都需要搜索引擎技术指标来保证。
2.4 节
以上分析了基于互联网的搜索引擎的结构和性能指标。基于这些研究,我使用JavaTM技术和一些开源工具来实现一个简单的搜索引擎——新闻搜索引擎。在接下来的几章中,我将对我的设计进行详细分析。
第三章 互联网机器人
3.1什么是网络机器人
网络机器人也叫蜘蛛程序,是一个专业的Bot程序。用于查找大量网页。它从一个简单的网页开始,然后通过它的超链接访问其他页面,从而理论上可以扫描互联网上的所有页面。
基于互联网的搜索引擎是Spider最早的应用。例如,搜索巨头使用网络机器人程序遍历网站来创建和维护这些大型数据库。
网络机器人也可以扫描一个网站的首页,获取该网站的文件列表和层次结构。您还可以扫描损坏的超链接和拼写错误。
3.2 网络机器人结构分析
互联网是建立在许多相关协议的基础上的,更复杂的协议建立在系统层协议之上。Web建立在HTTP(超文本传输协议)协议之上,而HTTP建立在TCP/IP(传输控制协议/互联网协议)协议之上,它也是一种Socket协议。因此,网络机器人本质上是一个基于Socket的网络程序。
3.2.1如何解析HTML
由于Web 中的信息是基于HTML 协议的,因此Web 机器人在检索网页时遇到的第一个问题就是如何解析HTML。在解决如何解析之前,我们先介绍一下HTML中的几种数据。
我们在解析的时候不需要关心所有的标签,我们只需要分析几个重要的。
超链接标签
超链接定义了 WWW 通过 Internet 链接文档的功能。它们的主要目的是让用户可以任意迁移到新页面,这是网络机器人最关心的标签。
图像映射标签
图像映射是另一个非常重要的标签。它允许用户通过单击图片迁移到新页面。
表格标签
表单是可以在网页中输入数据的单位。许多站点允许用户填写数据,然后通过单击按钮提交内容。这是表单的典型应用。
表格标签
表格是 HTML 的组成部分,通常用于格式化、存储和显示数据。
我们有两种特定的方法来解析这些 HTMl 标签:通过 JavaTM 中的 Swing 类或通过 Bot 包中的 HTMLPage 类。我在实际编程中使用后者。
Bot 包中的 HTMLPage 类用于从指定的 URL 读取数据并检索有用的信息。下面给出了这种类型的几种重要方法。
@>
3.2.2 Spider程序结构
网络机器人必须从一个网页迁移到另一个网页,因此它必须在该网页上找到超链接。程序首先解析网页的HTML代码,找到页面中的超链接,然后通过递归和非递归两种结构实现Spider程序。
递归结构
递归是一种在方法中调用自身的编程技术。虽然实现起来比较容易,但是会消耗内存,不能使用多线程技术,所以不适合大型项目。非递归结构
该方法使用队列的数据结构。当Spider 程序找到超链接时,它不会调用自己而是将超链接添加到等待队列中。当Spider程序扫描当前页面时,它会按照既定的策略访问队列中的下一个超链接地址。
虽然这里只描述了一个队列,但实际编程中用到了四个队列,每个队列都保存着相同处理状态的URL。
URL 只能同时在一个队列中,我们称之为 URL 状态。
上图展示了队列的变化过程。在这个过程中,当一个 URL 加入到等待队列中时,Spider 程序就会开始运行。只需等待队列中的页面或
Spider 程序正在处理一个网页,该程序将继续其工作。当等待队列为空且当前没有网页时,Spider 程序将停止工作。
3.2.3 如何构造Spider程序
在构建 Spider 程序之前,让我们先了解一下程序的各个部分是如何协同工作的。以及如何扩展这个程序。
流程图如下:
IspiderReportable 接口
这是一个必须实现的接口,通过回调函数可以接收到蜘蛛遇到的页面。该接口定义了 Spider 发送到其控制器的几个事件。通过为每个事件提供处理程序,可以创建各种 Spider 程序。下面是他的接口声明:
3.2.4 如何提高程序性能
互联网上有大量的网页,开发一个高效的Spider程序是非常重要的。以下是提高性能的几种技术:
Java的多线程技术
线程是通过程序的执行路径。多线程是程序同时运行多个任务的能力。它是一个程序内的分工和合作。
优化程序的常用方法是找出瓶颈并加以改进。瓶颈是程序中最慢的部分,它限制了其他任务的执行。举个例子:一个Spider程序需要下载十个页面。要完成此任务,程序必须向服务器发送请求,然后接受这些页面。当程序在等待响应时,其他任务无法执行,影响了程序的效率。如果多线程技术可以让这些网页的等待时间在一起而不相互影响,这可以大大提高程序的性能。
数据库技术
当Spider 程序访问一个大型网站时,它必须使用一种有效的方法来存储站点队列。这些队列管理蜘蛛程序必须维护大型网页列表。如果将它们放在内存中,性能会下降,因此我们可以将它们放在数据库中以减少系统资源的消耗。
3.2.5 网络机器人代码分析程序*敏*感*词*如下:
程序代码实现如下:
3.3 节
本章首先介绍网络机器人的基本概念,然后具体分析Spider程序的结构和功能。最后,还结合具体代码进行了详细说明。
我在编程中使用JavaTM技术,主要涉及net和io包。此外,还使用了第三方开发工具包 Bot(Jeff Heaton 提供的开发工具包)。
第4章基于Lucene的索引和搜索
4.1 什么是Lucene全文搜索
Lucene 是 Jakarta Apache 的一个开源项目。它是一个用Java编写的全文索引引擎工具包,可以很容易地嵌入到各种应用程序中,实现特定于应用程序的全文索引/检索功能。
4.2 Lucene的原理解析
4.2.1 全文搜索的实现机制
Lucene的API接口设计比较通用,输入输出结构非常类似于数据库表==>记录==>字段,所以很多传统的应用文件、数据库等都可以很容易的映射到Lucene的存储结构和接口中间。
通俗的说:Lucene可以算是一个支持全文索引的数据库系统。
4.2.2 Lucene 的索引效率
通常,书后往往附有一个关键词索引表(例如:北京:12、34页,上海:3,77页……),可以帮助读者找到书后的页码。相关内容更快。和数据库索引可以大大提高查询速度的原理是一样的。试想一下,翻书后索引的速度比翻页翻内容快多少倍……而且索引效率高,还有一个原因就是它被整理出来了。检索系统的核心是排序问题。
由于数据库索引不是为全文索引设计的,当使用like "%keyword%"时,数据库索引是无效的。当使用like查询时,搜索过程变得类似于翻页的遍历过程。因此,对于收录模糊查询的数据库服务,LIKE 对性能的危害极大。如果需要对多个关键词进行模糊匹配:like "%keyword1%" and like "%keyword2%"……效率可想而知。因此,建立高效检索系统的关键是建立类似于科学索引的反向索引机制。在按排序顺序存储数据源(如多个文章)的同时,还有一个已排序的关键词列表用于存储关键词==>文章映射关系,使用这个映射关系索引:[关键词==>文章where 关键词出现@>Number,出现次数(偶数位置:开始偏移,结束偏移),出现频率],检索过程是将模糊查询变成可以使用索引的多个精确查询的逻辑组合的过程。这大大提高了多个关键词查询的效率,所以全文搜索问题最终归结为排序问题。
可以看出,与数据库的准确查询相比,模糊查询是一个非常不确定的问题,这也是大多数数据库对全文检索的支持有限的原因。Lucene的核心特性是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口方便针对不同的应用进行定制。
可以通过下表对比数据库的模糊查询:
4.2.3 中文分词机制
对于中文,全文索引首先要解决一个语言分析问题。对于英语,句子中的单词自然用空格分隔,但在亚洲语言中,中文、日语和韩语的句子是逐词的。,所有,首先,如果你想用“词”来索引句子,这个词怎么分词是个大问题。
首先,一定不能使用单个字符(si-gram)作为索引单位,否则搜索“上海”时,不能让“海”也匹配。但是一句话:“北京*敏*感*词*广场”,电脑是如何按照中国人的语言习惯来分割的?“北京*敏*感*词*”还是“北京*敏*感*词*”?为了让计算机根据语言习惯进行分词,往往需要机器拥有比较丰富的词汇,才能更准确地识别句子中的单词。另一种解决方案是使用自动分词算法:按照bigram方法对词进行分词,例如:“北京*敏*感*词*广场”==>“北京京天*敏*感*词*广场”。这样,在查询的时候,是否在查询“
”,多个关键词按下和“与”关系组合也可以正确映射到对应的索引。这种方法在其他亚洲语言中很常见:韩语和日语。
自动切分的最大优点是没有词汇维护成本,实现简单。缺点是索引效率低,但对于中小型应用来说,基于二元语法的切分还是足够的。基于二元分割索引,一般大小与源文件几乎相同。对于英文,索引文件一般只与原文件相差30%-40%。
4.3 Lucene和Spider的结合
首先构造一个Index类来实现内容的索引。
代码分析如下: