1、搜索引擎的工作流程和原理搜索引擎是什么?搜索引擎就是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,并对收集到的信息进行组织和处理后,为用户提供检索和服务,并将用户检索的信息展示给用户的系统。对于常年混在互联网上的站长们来说,搜索引擎对他们是熟悉得不能再熟悉了。那么,你是否知道搜索引擎工作的基础流程与原理?接下来本文将引用Mr.Zhao的文章给大家说说搜索引擎工作的基础流程与原理。搜索引擎最重要的是什么?有人会说是查询结果的准确性,有人会说是查询结果的丰富性,但其实这些都不是搜索引擎最最致命的地方。对于搜索引擎来说,最最致命的是查询时间。试想一下,如果你在百度界面上查询一个关键词,结
2、果需要5分钟才能将你的查询结果反馈给你,那结果必然是你很快的舍弃掉百度。搜索引擎为了满足对速度苛刻的要求(现在商业的搜索引擎的查询时间单位都是微秒数量级的,所以采用缓存支持查询需求的方式,也就是说我们在查询搜索时所得到的结果并不是及时的,而是在其服务器已经缓存好了的结果。那么搜索引擎工作的大体流程是什么样子呢?我们可以理解为三段式。本文仅仅是对着三段工作流程进行大体上的讲解与综述,其中一些详细的技术细节将会用其它的文章进行单独的讲解。一.网页搜集。网页搜集,其实就是大家常说的蜘蛛抓取网页。那么对于蜘蛛(google称之为机器人来说,他们感兴趣的页面分为三类:1.蜘蛛从未抓去过的新页面。2.蜘蛛
3、抓去过,但页面内容有改动的页面。3.蜘蛛抓取过,但现在已删除了的页面。那么如何行之有效的发现这三类页面并进行抓取,就是spider程序设计的初衷与目的。那么这里就涉及到一个问题,蜘蛛抓取的起始点。每一位站长只要你的网站没有被严重降权,那么通过网站后台的服务器,你都可以发现勤劳的蜘蛛光顾你的站点,但是你们有没有想过从编写程序的角度上来说,蜘蛛是怎么来的呢?针对于此,各方有各方的观点。有一种说法,说蜘蛛的抓取是从种子站(或叫高权重站,依照权重由高至低逐层出发的。另一种说法蜘蛛爬在URL中是没有明显先后顺序的,搜索引擎会根据你网站内容更新的规律,自动计算出何时是爬取你网站的最佳时机,然后进行抓取
4、。其实对于不同的搜索引擎,其抓取出发点定然会有所区别,针对于百度,Mr.Zhao较为倾向于后者。在百度官方博客发布的索引页链接补全机制的一种办法(地址: http:/stblog.baidu-那么蜘蛛如何发现新链接呢?其依靠的就是超链接。我们可以把所有的互联网看成一个有向的聚集体,蜘蛛由起始的URLA沿着网页中超链接开始不停的发现新页面。在这个过程中,每发现新的URL都会与A中已存的进行比对,若是新的URL,则加入A中,若是已在A中存在,则丢弃掉。蜘蛛对一个站点的遍历抓取策略分为两种,一种是深度优先,另一种就是宽度优先。但是如果是百度这类商业搜索引擎,其遍历策略则可能是某种
5、更加复杂的规则,例如涉及到域名本身的权重系数、涉及到百度本身服务器矩阵分布等。二.预处理。预处理是搜索引擎最复杂的部分,基本上大部分排名算法都是在预处理这个环节生效。那么搜索引擎在预处理这个环节,针对数据主要进行以下几步处理:1.提取关键词。蜘蛛抓取到的页面与我们在浏览器中查看的源码是一样的,通常代码杂乱无章,而且其中还有很多与页面主要内容是无关的。由此,搜索引擎需要做三件事情:代码去噪。去除掉网页中所有的代码,仅剩下文本文字。去除非正文关键词。例如页面上的导航栏以及其它不同页面共享的公共区域的关键词。去除停用词。停用词是指没有具体意义的词汇,例如“的”“在”等。当搜索引擎得到这篇网页的关键词
6、后,会用自身的分词系统,将此文分成一个分词列表,然后储存在数据库中,并与此文的URL进行一一对应。下面我举例说明。 2.消除重复与转载网页。每个搜索引擎其识别重复页面的算法均不相同,但是其中Mr.Zhao认为,如果将消重算法理解为由100个元素组成,那么所有的搜索引擎恐怕其80个元素都是完全一样的。而另外20个元素,则是根据不同的搜索引擎针对seo的态度不同,而专门设立的对应策略。本文仅对搜索引擎大体流程进行初步讲解,具体数学模型不多做讲解。3.重要信息分析。在进行代码除噪的过程中,搜索引擎并非简单的将其去除掉而已,而是充分利用网页代码(例如H标签、strong标签、关键词密度、内链锚文本等方
7、式分析出此网页中最重要的词组。4.网页重要度分析。通过指向该网页的外链锚文本所传递的权重数值,来为此网页确定一个权重数值,同时结合上述的“重要信息分析”,从而确立此网页的关键词p中每一个关键词所具备的排名系数。5.倒排文件。正如上文所说,用户在查询时所得到的查询结果并非是及时的,而是在搜索引擎的缓存区已经大体排好的,当然搜索引擎不会未卜先知,他不会知道用户会查询哪些关键词,但是他可以建立一个关键词词库,而当其处理用户查询请求的时候,会将其请求按照词库进行分词。那么这样下来,搜索引擎就可以在用户产生查询行为之前,将词库中的每一个关键词其对应的URL排名先行计算好,这样就大大节省了处理查询的时
8、间了。简单来说,搜索引擎用控制器来控制蜘蛛爬取,然后将URL集与原始数据库进行保存,保存之后再用索引器控制每个关键词与URL之间的对应关系,并将其保存在索引数据库中。下面我们来举例说明。 上图是为了方便大家便于理解而做出来的,索引数据库实际上是搜索引擎中对性能要求最高的数据库,因为里面所有因素都会受到算法影响,所以实际上的索引数据库我觉得应该是由多维数组所组成的较为复杂的索引表,但其主要体现的大体作用与上图相同。三、查询服务。查询服务顾名思义,就是处理用户在搜索界面的查询请求。搜索引擎构建检索器,然后分三步来处理请求。1.根据查询方式与关键词进行切词。首先先把用户搜索的关键词切分为一个关键词序
9、列,我们暂时用q来表示,则用户搜索的关键词q被切分为q=q1,q2,q3,qn。然后再根据用户查询方式,例如是所有词连在一起,还是中间有空格等,以及根据q 中不同关键词的词性,来确定所需查询词中每一个词在查询结果的展示上所占有的重要性。2.搜索结果排序。我们有了搜索词q,q中每个关键词所对应的URL排序索引库,同时也根据用户的查询方式与词性计算出每个关键词在查询结果的展示上所占有的重要,那么只需要进行一点综合性的排序算法,搜索结果就出来了。3.展示搜索结果与文档摘要。当有了搜索结果后,搜索引擎就会将搜索结果展示在用户阅览的界面上以供用户使用。在这里,大家可以思考两个个问题。大家在搜索界面中
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:975644476@qq.com
本文链接:http://www.gawce.com/tnews/961.html