Algorithm 版 (精华区)
发信人: Lerry (想不开·撞树), 信区: Algorithm
标 题: 互联网的搜索引擎是如何工作的
发信站: 哈工大紫丁香 (2002年06月05日17:05:23 星期三), 站内信件
互联网的搜索引擎是如何工作的
版权所有:搜索之王 转贴自google cache 提交时间:23:20:40 03月03日
互联网的搜索引擎是如何工作的
互联网的优势就在于有上亿的页的信息存在其中,等待着人民来使用它们。但同样也
是因为这上亿页的信息,其中的大多数被它们的作者以一种奇怪的想法来命名,使用者
无法很快地了解其中的内容。那当我们需要从互联网上获取一定的信息的时候,我们怎
么知道该找那页去读呢?目前对于我们大多数人来说,遇到这样的问题 ,我们都会去使
用互联网的搜索引擎。
互联网的搜索引擎是为了方便用户查找存放在其它网站上的信息的特殊的网站。不
同的搜索引擎有不同的工作方法,但是它们都要完成以下三个基本的工作:
1. 它们搜索整个互联网……或根据一些重要的词语来挑选部分互联网的内容
2. 它们将找的关键字列成一个索引,并附上它们的地址。
3. 它们运行用户在索引中查找他们所需要内容的关键字。
在最初的时候,搜索引擎的索引中只包含几十万的页面和文件,每天的使用量是一
,两千人次。现在一个顶级搜索引擎的索引中包含有上亿的页面,每天的使用量接近千
万人次。
浏览互联网
当我们大多数人谈到互联网的搜索引擎时,我们所指的其实是网页的搜索引擎。要
说早在互联网上还没有出现可以被人们看到的网页的时候,可以帮助查找信息的搜索引
擎就已经出现了。那时候像gopher和Archie的程序都已经可提供有关储存在互联网服务
器上的文件的索引了,大大减少了查找程序和文件的时间。在八十年代后期,你要想很
好使用互联网就意味着你必须要学会如何使用gopher, Archie, Veronica 等类似的程序
。
开始
在搜索引擎能够告诉你某个文件在哪里之前,它必须先找到这个文件。搜索引擎是
通过使用一个被称作蜘蛛的软件在上亿的网页中查找信息的,并建立一个网站的关键字
列表。我们把蜘蛛软件建立关键字列表的过程称为网络爬行。为了建立一个对用户有用
的字列表,搜索引擎的蜘蛛需要查找很多的页面。
那么蜘蛛是如何开始它在网络上的旅行的呢?蜘蛛一般从那些比较流行的网站入手
,把这个网站中的网页的关键字做个索引,同时继续进入所有在这个网存在的链接。通
过这种方法,蜘蛛系统就可以快速地开始工作,逐渐遍布整个互联网。
在介绍他们系统是如何建立的文章中,Sergey Brin 和 Lawrence Page讲述了一下
他们的蜘蛛是如何快速工作的。他们建立的最初的系统可以使用多个蜘蛛,通常一次用
三个蜘蛛。而每个蜘蛛可以同时打开300个网页。在该系统的极限表演中,他们使用四个
蜘蛛使搜索系统每秒浏览100个页面,接收600KB的信息。要使蜘蛛能够高速工作的关键
就在于我们要建立一个给蜘蛛提供充足信息的系统。早期的Google系统有一个专门为蜘
蛛提供URL的服务器。同时它也建立了自己的DNS域名服务器,这样就减少了通过其它IS
P进行DNS服务造成的时间耽搁。当Google的蜘蛛浏览一个网页时,它会注意以下两点:
1:该页面中出现的字
2:字是在哪里找到的
在标题,副标题以及其它重要位置的词语都将被提供给用户进行深入的搜索。Goog
le蜘蛛将把这个网页中的所有重要的词语做成索引,不过会排除"a," "an" 和"the."等
词语。而其它网站的蜘蛛则可能采用其它的工作方式。
这些不同的工作方式关键就是为了让蜘蛛运作地更快,允许用户更有效地搜索。例
如,一些蜘蛛把网页标题、副标题和链接和这个页面中的使用最多的100个词语联系起来
,同时还保留该页前20行的所有字。据说Lycos公司就是使用这种技术来搜索整个互联网
的。
其它的搜索系统如AltaVista公司的,就采用了别的方式,它索引了页面上的所有字
包括"a," "an," "the"以及它并不是很重要的字。采用这种系统的目的是为了在互联网
的一些不太常用的部分上的搜索功能超过其它系统。
Meta-tags允许网页的作者指定该网页被索引的关键字。这个功能比较有用,特别是
在这个网站中的一些文字中具有两种或三种意思的时候,Meta-tags可以引导搜索引擎从
众多的意思中选择出最准确的一个。不过如果过于依赖Meta-tagd,也会存在着隐患。因
为如果一个粗心大意的网页作者在页面中添加热门话题的Meta-tags,而实际上他的网页
中并不包含这个内容。为了防止这种现象的发生,蜘蛛需要把网页中的内容和它的Meta
-tags进行比较,去除和网页内容不符的Meta-tags。以上我们讲的内容都基于一个假设
,就是网站的作者希望自己的网页被加入搜索引擎的搜索结果中。不过很多时候,网页
的作者并不希望被蜘蛛访问。例如,一个每隔一个时间段就产生一个新的页面的游戏,
当蜘蛛访问它的时候,并开始进入所有新页面的链接,这时这个游戏就会误认为是有一
个高速的人类玩家在玩,造成游戏失控。为了避免这种现象的发生,人民发明了自动排
除协议。这个协议在网页开始部分加入meta-tag语句告诉蜘蛛不要访问这个网页……即
不要索引网页里面的文字,也不要进入里面的链接。
建立索引
一旦蜘蛛完成在网页中搜索信息的任务(实际上搜索任务永远不会完成,互联网是
在不断变化的,蜘蛛也要不停地工作。),搜索引擎必须把收集来的信息以一种利于使
用的方式存储起来。 要使收集的数据能够方便用户需要注意两点:1.从原始数据中得出
的信息,2.信息索引的方法。
在最简单的情况里,搜索引擎仅存储关键字词以及能找到这个字词的URL,这只是一
种功能局限的引擎,因为用户无法了解到所查的词语在这个页面是重要的还是偶然提到
的,这个词语是出现了一次还是多次,同样用户也无法了解到这个页面上是否含有其它
也有这个关键字词的页面的链接。换句话说,简单的引擎无法在搜索的结果中按照相关
程度的高低对结果进行排列。
为了得到更有用的搜索结果,大多数搜索引擎都会存储更多的信息,像一个词语在
页面中出现的次数等,如果一个词语在文章的标题,副标题或者是meta-tags中出现,搜
索引擎就会增加这个词语在这个页面中的"重量"。每个商用搜索引擎都有各自的计算词
语"重量"的公式。这也就是为什么我们在不同的搜索网站中查找同一个词语,我们会得
到不同的结果列表。
做索引都有个简单的目标:能使信息近可能快地被搜索到。有许多方法可以建立索
引,但是目前最为有效的方法是建立散列表(一种通过散列表得到所查数据元素存储单
元的查找法,在发生地址冲突的情况下,由一个适当的过程予以处理。)这个方法的原理
较为复制,在这里不做详细介绍。
在英文中,有些字母经常作词语的首字母,而另一些字母则比较少。例如,你可以
发现在字典中"M"字头的部分比"X"字头的部分厚得多。这种不平衡性也就意味着要查找
一个以常用字母开头的词语比以生僻字母开头的词语更麻烦。散列法减少了这种不平衡
性的影响,缩短了查找条目所需的平均时间。有效的索引和存提高了搜索的速度,即便
是在用户采用混合搜索的时候。
建立搜索
用户在搜索时,首先要提出疑问,并且通过搜索引擎把疑问提交。这种疑问可以非
常简单,甚至是一个很短的单词。要进行复杂的搜索就必须使用允许用户缩小或扩展搜
索范围的逻辑系统。
以下是几个常见的逻辑语言: 和,或,否,跟着等。
在未来,搜索引擎会朝着更智能化,更人性化的方向发展。
--
当一个女孩儿觉得她不太容易了解那个男人的时候,她会爱他。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.382毫秒