Web搜索引擎设计和实现分析报告报告材料_第1页
Web搜索引擎设计和实现分析报告报告材料_第2页
Web搜索引擎设计和实现分析报告报告材料_第3页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Web搜索引擎设计和实现分析一 随着In ternet的飞速发展,人们越来越依靠网络来查找他们所需要的信息, 但是,由于网上的信息源多不胜数,也就是我们经常所说的"Rich Data, PoorIn formatio n"。所以如何有效的去发现我们所需要的信息,就成了一个很关键的问题。为了解决这个问题,搜索引擎就随之诞生。-现在在网上的搜索引擎也已经有很多,比较著名的有 AltaVista, Yahoo,In foSeek,Metacrawler, SavvySearch 等等。国内也建立了很多的搜索引擎,比如:搜狐、新浪、北极星等等,当然由于它们建立的时间不长,在信息搜索

2、的取全率和取准率上都 有待于改进和提高。- Alta Vista是一个速度很快的搜索引擎,由于它强大的硬件配置,使它能够做及其复杂的查询。它主要是基于关键字进行查询,它漫游的领域有Web和Use net 支持布尔查询的"AND","OR"和"NOT",同时还加上最相近定位"NEAR",允许通配 符和"向后"搜索(比如:你可以查找链接到某一页的所有 Web站点)。你可以决定是否对搜 索的短语加上权值,在文档的什么部位去查找它们。能够进行短语查询而不是简单的单词 查询的优点是很明显的,比如,我们想要

3、查找一个短语"to be or not to be",如果只是把它们分解成单词的话,这些单词都是属于Stop Word,这样这个查询就不会有任何结果,但是把它当作一个整体来查询,就很容易返回一些结果,比如关于哈姆雷特或者 是莎士比亚等等的信息。系统对查询结果所得到的网页的打分是根据在网页中所包含的 你的搜索短语的多少,它们在文档的什么位置以及搜索短语在文档内部之间的距离来决 定的。同时可以把得到的搜索结果翻译成其他的语言。- Exite是称为具有"智能"的搜索引擎,因为它建立了一个基于概念的索引。 当然它所谓的"智能"是基于对概率统计

4、的灵活应用。它能够同时进行基于概念和关键字的索引。它能够索引 Web,Usenet和分类的广告。支持"AND","OR","NOT"等布尔操作,同时也可以使用符号"+"和"-"。缺点是在返回的查询结果中没有指定网页的尺寸和格-I nfoSeek 是一个简单但是功能强大的索引,它的一个优点是有一个面向主题搜索的可扩展的分类。你可以把你的搜索短语和相似的分类目录的主题短语相互参照, 而那些主题短语会自动加到你的查询中去。使你的搜索有更好的主题相关性。同时它也支持对图象的查询。它能够漫游 Web,Us

5、e net,Use net FAQs等等。不支持布尔操作,但是可以使用符号"+"和"-"(相当于"AND"和"NOT")一 Yahoo实际上不能称为是一个搜索引擎站点,但是它提供了一个分层的主题索引,使你能够从一个通常的主题进入到一个特定的主题,Yahoo对Web进行了有效的组织和分类。比如你想要建立一个网页,但是你不知道如何操作,为了在Yahoo上找到关于建立网页的信息,你可以先在 Yahoo上选择一个主题:计算机和In ternet ,然后在这 个主题下,你可以发现一些子主题,比如: Web网页制作,CGI编程

6、,JAVA,HTML,网 页设计等,选择一个和你要找的相关的子主题,最终你就可以得到和该子主题相关的所有的 网页的链接。也就是说,如果你对要查找的内容属于哪个主题十分清楚的话,通过目录查询的方法要比一般的使用搜索引擎有更好的准确率。你可以搜索Yahoo的索弓I,但是事实上,你并没有在搜索整个 Web。但是Yahoo提供了选项使你可以同时搜索其 他的搜索引擎,比如:Alta Vista。但是要注意的是Yahoo实际上只是对 Web的一小部分 进行了分类和组织,而且它的实效性也不是很好。-搜索引擎的基本原理是通过网络机器人定期在 web网页上爬行,然后发现 新的网页,把它们取回来放到本地的数据库中

7、,用户的查询请求可以通过查询本地的数据库 来得到。如yahoo每天会找到大约500万个新的网页。-搜索引擎的实现机制一般有两种,一种是通过手工方式对网页进行索引,比女口 yahoo的网页是通过手工分类的方式实现的,它的缺点是Web的覆盖率比较低,同时不能保证最新的信息。查询匹配是通过用户写入的关键字和网页的描述和标题来进行匹配,而不是通过全文的匹配进行的。第二种是对网页进行自动的索引,象AltaVista则是完全通过自动索引实现的。这种能实现自动的文档分类,实际上采用了信息提取的技术。 但是 在分类准确性上可能不如手工分类。-搜索引擎一般都有一个 Robot定期的访问一些站点,来检查这些站点的

8、变 化,同时查找新的站点。一般站点有一个robot.txt文件用来说明服务器不希望Robot 访问的区域,Robot都必须遵守这个规定。如果是自动索引的话,Robot在得到页面以后,需要对该页面根据其内容进行索引,根据它的关键字的情况把它归到某一类中。页面的信息 是通过元数据的形式保存的,典型的元数据包括标题、IP地址、一个该页面的简要的 介绍,关键字或者是索引短语、文件的大小和最后的更新的日期。 尽管元数据有一定的标 准,但是很多站点都采用自己的模板。文档提取机制和索引策略对 Web搜索引擎的有 效性有很大的关系。高级的搜索选项一般包括:布尔方法或者是短语匹配和自然语言处理。 一个查询所产生

9、的结果按照提取机制被分成不同的等级提交给用户。最相关的放在最前 面。每一个提取出来的文档的元数据被显示给用户。同时包括该文档所在的URL地址。-另外有一些关于某一个主题的专门的引擎,它们只对某一个主题的内容进 行搜索和处理,这样信息的取全率和精度相对就比较高。-同时,有一类搜索引擎,它本身不用 Robot去定期的采集网页。象SavvySearch 和MetaCrawler是通过向多个搜索引擎同时发出询问并对结果进行综合返回给 用户实现搜索功能。当然实际上象SavvySearch能够对各个搜索引擎的功能进行分析和比较, 根据不同的用户查询提交给不同的搜索引擎进行处理,当然用户自己也可以指定利用哪

10、一个搜索引擎。-一个优秀的搜索引擎必须处理以下几个问题:1网页的分类2自然语言的 处理3搜索策略的调度和协作 4面向特定用户的搜索。所以很多搜索引擎不同程度 的使用了一些人工智能的技术来解决这些方面的问题。、网络Spider的实现描述-现在有很多文章对Web引擎做了大量的介绍和分析,但是很少有对它们的 实现做一个详细的描述,这里我们主要来介绍一个具有基本功能的Web引擎的实现。本文,我们以类C+语言的形式来描述 Web引擎如何采集网页并存放到数据库中的过程。同时描述了如何根据用户输入的关键字查询数据库并得到相关网页的过程。-2.1数据库结构-首先,我们要建立一个数据库表用来存放我们得到的网页。

11、这里一般需要建立如下的表:-1.字典表的建立,事实上这里是用文档中有意义的单词和它们的出现频率来代表一 个文档-该表(WordDictionaryTbl)主要要包括三个字段,主要是用来存放和一 个网页 相关的单词的情况url_id 对每一个URL的唯一的ID号 word 该URL中的经过stem 的单词 in tag该单词在该网页中的出现的次数-2.存储每一个URL信息的表-该表(URLTbl)中主要的关键字段有: rec_id 每一条记录的唯一的ID号status得到该URL内容的状态,比如HTTP_STATUS_TIMEOUT表示下载网页的最大允许超时url URL的字符串名称conten

12、 t_type内容的类型last_modified最新的更改时间title 该URL的标题docsize该URL的文件的尺寸last_i ndex_time最近一次索引的时间next_i ndex_time下一次索引的时间tag对于网页,用来表示它的类型,比如:是text,或者是html,或者是图片等等hops得到文件时候的曾经失败的次数keywords对于网页,和该网页相关的关键字descriptio n 对于网页,指网页的内容的描述lang文档所使用的语言-3.因为网页中有很多单词是一些介词和语气助词或者是非常常用的常用词,它们本身没有多少意义。比如:英语中的about,i n, at,w

13、e,this等等。中文中的如和","一起","关于"等等。我们统一的把它们称为停止词(stop word )。所以我们 要建立一个表,来包括所有这些停止词。该表(StopWordTbl)主要有两个字段。word char(32)表示那些停止词lang char表示所使用的语言-4.我们要建立一个关于robot的表,我们在前面说过,所有的网站一般都有 一个robot.txt 文件用来表示网络上的robot可以访问的权限。该表(RobotTbl)主要 有以下字段。hosti nfo Web 站点主机的信息path 不允许robot 访问的目录-5.

14、建立我们需要屏蔽的那些网页(比如一些内容不健康的或者没有必要去搜 索的站点)的一张表(ForbiddenWWWTbl),主要的字段就是网页的 URL。-6.另外我们需要建立一个我们所要得到的文件类型的表(FileTypeTbl),比如,对于一个简单的 Web搜索引擎,我们可能只需要得到后缀为.html , htm ,.shtml 和txt的类型文件。其他的我们只是简单的忽略它们。主要的字段就是文件的类型和说明。-其中关于停止词的表的内容是我们要实现要根据各种语言的统计结果,把 那些意义不大的单词放进去。关于文档单词、URL和Robot的表的内容都是在获取Web网页的时候动态增加记录的。-2.2

15、 具体网页获取算法描述-具体的网页的获取步骤是这样的:-我们可以设定我们的搜索程序最大可以开的线程的数目,然后这些线程可 以同时在网上进行搜索,它们根据数据库中已有的关于网页的信息, 找出那些需要更新 的网页(如何判断哪些网页需要更新是一个值得研究的过程,现在有很多启发式和智能 的算法,基本上是基于统计规律进行建模。 最简单的当然是设定一个时间范围,在某个时 间范围以前的网页被重新去搜索一遍),然后判断那些网页是否在屏蔽表中,如果是的话, 就从关于URL的表中删除该条记录。否则,我们就到相应的 WWW站点去得到URL 指定的文件(这里需要注意的是根据不同的URL的特点,需要使用不同的协议,比如

16、对于 FTP 站点要采用FTP协议,对于HTTP站点要采用HTTP协议,新闻站点要采用NNTP协议等 等)事实上,我们先得到关于该网页的头信息,如果该网页的最新修改时间和我们最近提取的时间是一样的话,表示该网页内容没有任何更新,则我们就不必去得到它的内容,只需 要修改最近一次更新它的时间为当前的时间就可以了。如果该网页最近做了修改,我们就要得到该网页,并对它的内容进行分析,主要要包括和它相关的链接,把它们 加到相应的数据库中,同时判断网页所包含的各种其他的文件,如文本文件、图形文 件、声音文件和其他多媒体文件是否是我们所需要的文件,如果是的话,就把它加到我 们响应的数据库中。同时要根据网页的内

17、容提取所有的有意义的单词和它们的出现的次数,放到相应的数据库中。为了更好的描述这个过程,我们来看跟这个过程相关的主要 的几个对象和数据结构。对象主要是针对三个层次来讲的。第一层是针对WWW服务器,第二层是针对每一个页面,第三层是针对每一个页面的全文的索引。-2.3和实现相关的主要类对象和功能描述下面的结构是针对一个站点来说的。Class CServer 主要的属性有:char *url; /WWW站点的URL名称char *proxy; /使用的代理的名称char *basic_auth; / 进行基本的 HTTP 认证int proxy_port; /代理的端口号in t period; /

18、 再次索引的周期int n et_errors; /网络连接不通的次数int max_net_errors; /可以允许的最大的网络错误in t read_timeout; /下载文件允许的最大的延迟int maxhops; / 表示URL可以最大跳转的深度int userobots; /是否遵守robot.txt 中的约定int bodyweight; /在< body >.< /body >之间的单词的权重int titleweight; /在< title >.< /title >之间的单词的权重int urlweight; /在文档的UR

19、L中的单词的权重int descweight;/在 < METANAME="Descriptio n" Co nte nt="." >之间单词的权重int keywordweight; / 在 < META NAME="Keywords" Co nten t="">之间的单词的权重-主要方法有:FindServer();用来查找该服务器是否存在并可以连接FillDefaultAttribute()/用来针对所有的WWW服务器填写默认的属;以上的对象中的成员变量是和一个站点相关的参数的设置,我

20、们对所有的站点有一个默认的设置,但是可以对某些站点做一些特殊的设置。这些设置可以在配置文件中设定。-下面是关于文档的结构的主要的数据成员:Class CNetDocume nt主要属性有:int url_id; / 该 URL 的 ID 号int status; /获取该文档时候的状态int size; /文档的尺寸int tag; /和该文档相关的标签,表示该文档是HTML,TEXT或者是其他类型int hops; /URL跳转的次数char *url; /和该文档相关的URL的名称char *con te nt_type; /该内容的类型char *last_modified; /最近一次

21、的更新时间char *title; / 该文档的标题char *last_i ndex_time; /上次索引的时间char *n ext_i ndex_time; / 下次索引的时间char *keywords; /该文档中的关键字char *descriptio n; / 该文档的描述主要方法有:FillDocInfo()根据数据库,得到该文档相关信息AddHerf()加入网页中存在的新的链接的网址DeleteURL()删除一个存在的网址CanGetThisURL()根据配置决定是否去得到该网页/下面三个方法是根据不同的 URL,用不同的协议去获得文档NNTPGet()FTPGet(.)H

22、TTPGet(.)ParseHead()如果是HTTP协议得到的话,分析头信息ParseMainBody()对获得的文档的主体进行分析ServerResponseType ( .)/得到服务器端的响应消息UpdateURLDB( .)/更新的数据入库CNetDocume nt;-事实上,我们在要提取一个网页的时候,都要建立一个对象,然后再对这个网页进行分析的时候,把相关的内容放到这个CNetDocument 的成 员变量里面。下面是关于页面全文索引的结构的主要数据成员:Class CIn dexer 主要属性有:char *url; /我们要处理的文档相关的 URL的名称int mwords;

23、 /我们事先设定的一个网页的最大的单词数目int n words; /实际的得到的单词的数目int swords; /我们已经排序的单词的数目WORD *Word; / 所有单词的内容char *buf; /我们为文档所分配的空间主要方法有:InitIndexer()进行初始设置和分配ParseGetFile()对得到的网页进行全文索引AddWord()把网页的可以索引的单词加到 Word数组中去InToDB( .)/关于网页全文索引的信息入库;-进行网页提取前,我们要建立一个CIndexer对象,它主要是用来对网页进 行全文的索引。一般来说我们只对两种类型的URL进行全文索引,一个是text

24、/html ,另外一个是text/plain 。其中WORD的数据结构如下:typedef struct word_struct in t cou nt; /该单词出现的次数int code; /该单词的正常的形式,比如单词可能为en couragi ng,它的正常的形式应该为encourage,这其实是一种对单词的 stem。即我们只取单词的主干部分。char *word; / 该单词的内容 WORD;-以下的结构是和网页中的一些链接的对象相关的一个数据结构typedef struct href_struct char *href; /该链接的名称int hops; /发生的跳转次数int

25、stored; /是否已经存储到数据库中 HREF;-所有需要更新的和新产生的 URL都被放到这个结构中,当它的数量超过一 疋的范围以后,被一次性的存入数据库。-关于URL的一个数据结构如下:typedef struct url char *schema; / 表示该URL是通过什么协议得到的,比如 HTTP ,FTP, NNTP 等。char *specific; / 主机的名称加上路径char *host info; / 主机的名称加上相关的协议端口char *host name; / 主机的名称char *path; / 在主机的具体的路径char *file name; / 文件的名称

26、char *anchor; / 相关的 anchorin t port; /协议相关的端口 URL;-这是针对URL的一些相关的属性的描述的一个数据结构。事实上在数据库中,我们存储的只是对网页的描述和对一些文本和HTML页面的关键词的索引信息我们并不存储网页的实际的内容。-三、用户查询实现描述-关于对用户提交的查询请求的实现分析:-用户想要查询某一方面的信息一般都是通过提供和该领域相关的几个关键 字来进行的。-我们来看一下关于用户查询的相关的数据结构和类:-下面是一个关于单词和它的权值的基本结构:typedef struct word_weight_pairchar wordWORD_LEN;

27、int weight;word_weight_pair;-下面的类主要是用来对用户的查询进行处理和分析:Class CUserQuerychar m_UserQueryMAX_QUERYLEN; /用户的查询表达式CPtrArray word_weight_col;/是关于结构word_weight_pair的动态数组int m_maxReturnSum; /用户希望返回的最多的网页数int search_mode;CObArray m_returnDoc; / 是关于 CNetDocument 对象的一个动态数组NormalizeWord (char* On eWord ) ; / 对单词进行归整化,即 Stem.Fin d(char* odbcName); /进行数据库查找和匹配;-系统实现的基本的步骤如下:-1.对用户输入的查询表达式进行分析。事实上,我们在前面的 Spider搜索 过 程中对文档的表示是通过关键字形式描述的,每一个文档可以表示为这样的一个 集合其中::=< 单词或短语名称 >< 单词或短语的权值>-实际上就是采用矢量空间的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论