搜索引擎最重要的是什么?有人会说是查询结果的准确性,有人会说是查询结果的丰富性,但其实这些都不是搜索引擎最最致命的地方。对于搜索引擎来说,最最致命的是查询时间。试想一下,如果你在百度界面上查询一个关键词,结果需要5分钟才能将你的查询结果反馈给你,那结果必然是你很快的舍弃掉百度。

搜索引擎为了满足对速度苛刻的要求(现在商业的搜索引擎的查询时间单位都是微秒数量级的),所以采用缓存支持查询需求的方式,也就是说我们在查询搜索时所得到的结果并不是及时的,而是在其服务器已经缓存好了的结果。那么搜索引擎工作的大体流程是什么样子呢?我们可以理解为三段式。

本文仅仅是对着三段工作流程进行大体上的讲解与综述,其中一些详细的技术细节将会用其它的文章进行单独的讲解。

一.网页搜集。

网页搜集,其实就是大家常说的蜘蛛抓取网页。那么对于蜘蛛(google称之为机器人)来说,他们感兴趣的页面分为三类:

1.蜘蛛从未抓去过的新页面。

2.蜘蛛抓去过,但页面内容有改动的页面。

3.蜘蛛抓取过,但现在已删除了的页面。

那么如何行之有效的发现这三类页面并进行抓取,就是spider程序设计的初衷与目的。那么这里就涉及到一个问题,蜘蛛抓取的起始点。

每一位站长只要你的网站没有被严重降权,那么通过网站后台的服务器,你都可以发现勤劳的蜘蛛光顾你的站点,但是你们有没有想过从编写程序的角度上来说,蜘蛛是怎么来的呢?针对于此,各方有各方的观点。有一种说法,说蜘蛛的抓取是从种子站(或叫高权重站),依照权重由高至低逐层出发的。另一种说法蜘蛛爬在URL集合中是没有明显先后顺序的,搜索引擎会根据你网站内容更新的规律,自动计算出何时是爬取你网站的最佳时机,然后进行抓取。

其实对于不同的搜索引擎,其抓取出发点定然会有所区别,针对于百度,Mr.Zhao较为倾向于后者。在百度官方博客发布的《索引页链接补全机制的一种办法》(地址:http://stblog.baidu-tech.com/?p=2057)一文中,其明确指出“spider会尽量探测网页的发布周期,以合理的频率来检查网页”,由此我们可以推断,在百度的索引库中,针对每个URL集合,其都计算出适合其的抓取时间以及一系列参数,然后对相应站点进行抓取。

在这里,我要说明一下,就是针对百度来说,site的数值并非是蜘蛛已抓取你页面的数值。比如site:www.seozhao.com,所得出的数值并不是大家常说的百度收录数值,想查询具体的百度收录量应该在百度提供的站长工具里查询索引数量。那么site是什么?这个我会在今后的文章中为大家讲解。

那么蜘蛛如何发现新链接呢?其依靠的就是超链接。我们可以把所有的互联网看成一个有向集合的聚集体,蜘蛛由起始的URL集合A沿着网页中超链接开始不停的发现新页面。在这个过程中,每发现新的URL都会与集合A中已存的进行比对,若是新的URL,则加入集合A中,若是已在集合A中存在,则丢弃掉。蜘蛛对一个站点的遍历抓取策略分为两种,一种是深度优先,另一种就是宽度优先。但是如果是百度这类商业搜索引擎,其遍历策略则可能是某种更加复杂的规则,例如涉及到域名本身的权重系数、涉及到百度本身服务器矩阵分布等。

二.预处理。

预处理是搜索引擎最复杂的部分,基本上大部分排名算法都是在预处理这个环节生效。那么搜索引擎在预处理这个环节,针对数据主要进行以下几步处理:

1.提取关键词。

蜘蛛抓取到的页面与我们在浏览器中查看的源码是一样的,通常代码杂乱无章,而且其中还有很多与页面主要内容是无关的。由此,搜索引擎需要做三件事情:代码去噪。去除掉网页中所有的代码,仅剩下文本文字。②去除非正文关键词。例如页面上的导航栏以及其它不同页面共享的公共区域的关键词。③去除停用词。停用词是指没有具体意义的词汇,例如“的”“在”等。

当搜索引擎得到这篇网页的关键词后,会用自身的分词系统,将此文分成一个分词列表,然后储存在数据库中,并与此文的URL进行一一对应。下面我举例说明。

假如蜘蛛爬取的页面的URL是http://www.seozhao.com/2.html,而搜索引擎在此页面经过上述操作后提取到的关键词集合为p,且p是由关键词p1,p2,……,pn组成,则在百度数据库中,其相互间的关系是一一对应,如下图。

2.消除重复与转载网页。

每个搜索引擎其识别重复页面的算法均不相同,但是其中Mr.Zhao认为,如果将消重算法理解为由100个元素组成,那么所有的搜索引擎恐怕其80个元素都是完全一样的。而另外20个元素,则是根据不同的搜索引擎针对seo的态度不同,而专门设立的对应策略。本文仅对搜索引擎大体流程进行初步讲解,具体数学模型不多做讲解。

3.重要信息分析。

在进行代码除噪的过程中,搜索引擎并非简单的将其去除掉而已,而是充分利用网页代码(例如H标签、strong标签)、关键词密度、内链锚文本等方式分析出此网页中最重要的词组。

4.网页重要度分析。

通过指向该网页的外链锚文本所传递的权重数值,来为此网页确定一个权重数值,同时结合上述的“重要信息分析”,从而确立此网页的关键词集合p中每一个关键词所具备的排名系数。

5.倒排文件。

正如上文所说,用户在查询时所得到的查询结果并非是及时的,而是在搜索引擎的缓存区已经大体排好的,当然搜索引擎不会未卜先知,他不会知道用户会查询哪些关键词,但是他可以建立一个关键词词库,而当其处理用户查询请求的时候,会将其请求按照词库进行分词。那么这样下来,搜索引擎就可以在用户产生查询行为之前,将词库中的每一个关键词其对应的URL排名先行计算好,这样就大大节省了处理查询的时间了。

简单来说,搜索引擎用控制器来控制蜘蛛爬取,然后将URL集与原始数据库进行保存,保存之后再用索引器控制每个关键词与URL之间的对应关系,并将其保存在索引数据库中。

下面我们来举例说明。

假若http://www.seozhao.com/2.html页面被切词成p={p1,p2,p3,……,pn},则其在索引数据库中由下图方式体现。

上图是为了方便大家便于理解而做出来的,索引数据库实际上是搜索引擎中对性能要求最高的数据库,因为里面所有因素都会受到算法影响,所以实际上的索引数据库我觉得应该是由多维数组所组成的较为复杂的索引表,但其主要体现的大体作用与上图相同。

三、查询服务。

查询服务顾名思义,就是处理用户在搜索界面的查询请求。搜索引擎构建检索器,然后分三步来处理请求。

1.根据查询方式与关键词进行切词。

首先先把用户搜索的关键词切分为一个关键词序列,我们暂时用q来表示,则用户搜索的关键词q被切分为q={q1,q2,q3,……,qn}。

然后再根据用户查询方式,例如是所有词连在一起,还是中间有空格等,以及根据q中不同关键词的词性,来确定所需查询词中每一个词在查询结果的展示上所占有的重要性。

2.搜索结果排序。

我们有了搜索词集合q,q中每个关键词所对应的URL排序——索引库,同时也根据用户的查询方式与词性计算出每个关键词在查询结果的展示上所占有的重要,那么只需要进行一点综合性的排序算法,搜索结果就出来了。

3.展示搜索结果与文档摘要。

当有了搜索结果后,搜索引擎就会将搜索结果展示在用户阅览的界面上以供用户使用。

在这里,大家可以思考两个个问题。

大家在搜索界面中经常发现百度展示的摘要是用户搜索词周围的,如果我不仅仅只看第一页,多往后翻一些页,会看到有些结果由于其目标页面本身并未完全包含搜索词,而在百度提取的摘要中标红词仅是部分搜索词,那么我们可以这样理解,百度在搜索词不被完全包含的情况下,是不是应该优先展现在分词结果中被百度认为较为重要的词呢?那么从这些搜索结果中我们是不是就可以看出百度分词算法的部分端倪呢?

②有时候页面中会多次出现搜索词,而百度搜索结果页面中在网站摘要部分仅会显示部分,通常这么部分是连续的,那我们是不是可以理解在摘要部分,百度会优先展示页面中它认为与对此搜索词最重要的部分呢?那么由此我们是不是可以揣度出百度针对页面除噪后对不同部分赋予权重的算法呢?

这两个问题仁者见仁智者见智,做SEO的朋友们自己去探索与摸索吧,Mr.Zhao不敢在此无人子弟。

四、现今百度的流程漏洞。

请原谅我用流程漏洞来形容这个模块,但我不得不说,在如今点击器横行的天下,我觉得说是漏洞无可厚非。

那就是除了上面三个大环节外,百度还构建了用户行为模块,来影响原始数据库与索引库。而影响原始数据库的,是百度的快照投诉,主要处理互联网暴利的一些行为,这点无可厚非。而影响索引库的,是用户的点击行为,这个设计本身也无可厚非,但百度算法的不成熟,导致了点击器作弊猖獗。

百度的用户行为分析模块很简单,除了自身投诉的提交入口外,就是搜集用户在搜索界面的点击行为,如果此页面结果被大部分用户阅览,但没有产生点击,用户居然大部分选择点击第二页甚至更后面的页面,则此现象就会被百度工程师们所知道,则会根据这方面来微调算法。如今百度针对不同行业,其算法早已不同了。

如果前两页内某个搜索界面被大量用户选择点击,则通常会在24小时候,这个搜索结果被大幅前提,甚至会被提升至第一名。

五、搜索引擎大体流程图(加上用户行为分析器)

以上就是我所对搜索引擎工作的基础流程与原理的理解。

最后我想说广大的SEO从业者们应该已经发现无论是百度还是谷歌或者其它的商业搜索引擎,他们都会要求seoer们不要去在意算法、不要去在意搜索引擎,而是去多关注用户体验。这里我们可以理解成一个比喻,搜索引擎是买西瓜的人,而SEO们是种西瓜的人,买西瓜的人要求我们这些种西瓜的人不要关心他们挑选西瓜的标准,而是多多在意怎么去种出好西瓜,而对于什么样的西瓜是他们需要的好西瓜,他们又往往用一些模糊的概念掩盖过去。诚然,这样搜索引擎得到的结果将会多样化,他们可以在挑选结果时有更多的选择,能够最大限度的维护这些商业搜索引擎自身的利益,但是请其也不要忘记,我们这些种西瓜的也要有口饭吃。

Mr.Zhao始终坚持白帽SEO,深入研究UE,做对用户有意义的站。但与此同时,我也坚信身为seoer,我们还应该对算法有及时了解,以便我们做出的站在符合用户口味的时候,更能在搜索引擎中得到良好的展现,因为毕竟seoer也是人,也希望过得好一点。

####朋友的小店,全店批发价  男装,宅男朋友值得拥有 ,可以去看下哦。

http://googleing.1688.com/

转载于:https://blog.51cto.com/2358205/1317014

搜索引擎工作的基础流程与原理相关推荐

  1. 计算机自动连续工作的基础是存储程序原理,计算机的存储程序工作原理是什么...

    以下是我抄的,把流程图搞定就可以计算机的基本原理是:存储程序和程序控制.预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中.每一条指令中明确规定了计算机从 ...

  2. php关键词分词搜索 最多匹配的排在最前面_百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客...

    原出处:蜘蛛池博客 原文链接:百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客 从事SEO(搜索引擎优化)工作的人可以比喻成搜索引擎的贴身管家,作为一名合格称职的管家必须要了解所服务对象的习 ...

  3. Web搜索引擎工作原理和体系结构

    1.Web搜索引擎的基本要求 搜索引擎是一个网络应用软件系统,如下图所示,对它有如下基本要求. 能够接受用户通过浏览器提交的查询词或者短语,记作q,例如"大数据","Sp ...

  4. 图解搜索引擎工作原理

    做SEO的,如果不懂搜索引擎的工作原理是很难恰当开展工作的.前几天给学生讲SEO课程中的搜索引擎工作原理时,很多同学表示不太懂.后来我画了搜索引擎主要工作流程的示意图给大家,很多同学表示"懂 ...

  5. Google搜索引擎工作原理简介

    实在是写不出来高质量的原创文章,今天再次转载一篇网络上看到的文章吧,叫Google搜索引擎工作原理简介,其中比较详细的介绍和分析了google搜索引擎相关工作机制,下面是原文内容: 这篇文章是基于Go ...

  6. 搜索引擎工作原理笔记

    搜索引擎的工作过程大体可以分为三个阶段: 1.对网页进行抓取建库 搜索引擎蜘蛛通过抓取页面上的链接访问其他网页,将获得的HTML代码存入数据库 2.预处理 索引程序对抓取来的页面数据进行文字提取.中文 ...

  7. WEB前端-搜索引擎工作原理与SEO优化

    一.搜索引擎工作原理 搜索引擎的工作分为三个节点,即爬行,索引,和检索 1.爬行 搜索引擎具有网路爬虫或蜘蛛来执行爬网,每次抓取工具访问网页时,它都会复制该网页并将其网址添加到索引中. 在 " ...

  8. spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理

    引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...

  9. 【SEO】从搜索引擎工作过程来分析如何进行搜索引擎优化

    文章目录 初识SEO SEO是什么 为什么要做SEO Paid VS Organic 搜索引擎如何工作的 概览 爬取 索引 排名 如何进行SEO 概览 Tech SEO Onsite SEO Offs ...

最新文章

  1. apache 安装与配置详细教程
  2. CocoStudio 1.3和1.4.1导入Flash文件注意事项(转载并有修改)
  3. 如何判断一个点是否在一个多边形内?
  4. 减少模型方差的方法借鉴
  5. Cadence元器件库
  6. 包打包和解析过程 unity_Unity学习—资源管理概览
  7. 是引进外部函数吗_使用PowerBI的这两个函数,灵活计算各种占比
  8. GBDT(梯度提升决策树)总结笔记
  9. 详解浏览器跨域访问的几种办法
  10. vue插槽--slot
  11. only has output.xml, how to check failed step.
  12. 编译原理_P1001
  13. 第二届蓝桥杯省赛---夺冠概率
  14. ORB-SLAM2 窗口显示Viewer线程
  15. React学习笔记(番外一)——video.js视频播放组件的入门及排坑经历
  16. 自己动手开发安卓版按键精灵
  17. Linux查看内存信息(型号、大小、速率等)
  18. 微信小程序四种json配置文件详解
  19. 科林明伦杯 哈尔滨理工大学第十届程序设计竞赛 (补)
  20. react移动端登录(第三方登录)和个人执行实现

热门文章

  1. git merge 回退_Git项目开发必备命令
  2. uniapp原生子窗体(弹出层为例子)
  3. Request对象 --web浏览器向web服务端的请求
  4. Web开发中的相对路径和绝对路径
  5. 最大连续子序列乘积(DP)
  6. 解决centos下tomcat启动太慢 JDBC连接oracle太慢的问题
  7. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
  8. 日常工作问题解决:centos7下配置网卡以及查询网卡UUID
  9. Android:禁用listView上的突出显示单击
  10. Javascript是否通过引用传递?