vlambda博客
学习文章列表

搜索引擎原理系列教程:大神总结的教程,”实用易懂“是不可能的

《搜索引擎原理系列教程》这个虽然称不上书籍,但由于里面信息量以及内容比较实用,也弥补了百度白皮书的一些短板——话语浮于表面,另外值得鼓励的是,这个教程完全是由一个民间的SEO爱好者总结,这份精神值得称赞。

由于这本书总共8大章节,内容太多,我就不一一介绍了,但我这里仍然想讲三个方面,也是我们SEOER比较关心的三个方面:收录、索引、排名。

一、收录

收录其实是个复杂的过程,他简单的分为这四个步骤:

搜索引擎搜集网页过程 

1、 调度器是整个搜集过程的核心,它内部保存有一个已访问URL库和未访问URL库,统称URL库。一开始调度器会从未访问URL库中取出一条URL,分配给蜘蛛,让蜘蛛去抓取未抓取过的URL。

2、 当一个蜘蛛得到URL的时候,它会向返个URL发出请求抓取,流程是:对该URL对应的域名进行DNS解析->得到IP进行Socket连接->连接成功发出http请求->接收网页信息。

3、 蜘蛛得到网页信息后,会返回源代码给调度器,调度器会将源代码保存到网页数据库中。

4、 调度器会对抓取到网页迕行链接提取,将未抓取过的URL存放到未访问URL库中,并将刚刚抓取完的URL更新到已抓取URL库中。

这其中会涉及到去重

调度器的工作流程

1、从未访问URL表中依次取出URL,分配给各个蜘蛛。

2、蜘蛛得到URL,进行抓取,得到网页的源代码,对该源代码进行URL的提取,获得该网页包含的所有URL。

3、调度器依次查看得到的URL是否在已访问URL库中存在。如果存在,则说明已经被抓取过,那么将该URL丢弃;如果不存在,说明这个URL没有被抓取过,则顺序添加到未访问URL表中,等待之后抓取。

4、重复步骤1,直到未访问表为空。

二、索引

网页预处理

1、给原始网页建立索引。

2、针对搜索有网页库进行网页切分,将每一个页面转化为一组词的集合。(正向索引)

3、将网页到索引词的映射转换为索引词到网页的映射,形成倒排文件(包括倒排表和索引词表)
总的来说,搜索引擎从网页数据库获取网页然后进行代码过滤,然后提取正文信息后进行切词,之后的步骤就是对关键词集合进行筛选,得到网页关键词正向索引,最后才将搜索引擎将正向索引转换未关键词到网页的倒排索引,正是这个技术,搜索引擎才有可能在1S内给用户呈现搜索结果。

另外,这其中搜索引擎做的动作就是网页净化和消重,除了去除网页内噪音内容(如广告、版权等),提取网页主题和相关内容外,去除网页集合中内容重复内容。

有同学可能会问,搜索引擎如何识别主体内容的呢?事实上,算法是靠建立HTML标签树和投票方法识别正文文本。

比如,我们定一下规则,

1、如果文本块文本长度少于10个字,0分。介于10~50个字得5分。介于50~250个字,得8分。超过250个字,得10分。

2、文本块文本位置在右侧,得0分。在顶部,得3分。在左侧,得5分。在中部,得10分。

那我们就得出,页面TITLE得分9,正文加粗H1标签得分8等等,DIV部分的AD部分得分0,丢弃。
(以上举例只为了参考,跟实际算法没有关联)

搜索引擎进行网页消重都要经过3个步骤,首先是特征抽取(这其中涉及到I-Match算法、Shingle算法),然后相似度计算、评价是否相似,最后才是消重。

事实上,搜索引擎算法和用户交互的过程就是一个查询的流程,比如用户搜索“搜索引擎原理”,算法分词后得到“搜索引擎”,“原理”,在倒排索引表中找到包含这两个文档列表,求交,然后将用户查询以及上一步找到文档列表中被一条记录进行向量化后,求查询向量和文档向量的相似度,然后从高到底排序,最后就是我们看到的最终搜索结果。

三、排名

最后就举个例子作为结尾:

搜索引擎网页权重=网页中词项基本权重+链接权重+用户评价权重

网页中词项基本权重

1、例如某个关键词”搜索引擎”在<h1><b>搜索引擎</b></h1>的环境下,权重应该为:WBT=W+W, (h1)+W,(b)=10+12+4=26

2、关键词“搜索引擎”可能还在文档中其他地方出现n次,每次出现都可以计算一个WBT1、WBT2、WBT3…WBTn,那么可以计算出整个文档“搜索引擎”这个关键词的权重为︰

wBT(关键词,网页)=WBT,+ WBT,+…+WBTT=>wBT

相关排序–链接权值的计算 

 

搜索引擎原理系列教程:大神总结的教程,”实用易懂“是不可能的

相关排序–用户评价权值的计算 

….
最终权值的计算 

 

搜索引擎可以通过配置KWB、KWL、KWU来设置侧重哪些因素影响权重,比如如果搜索引擎设置了KWL为0.8,KWB、KWU均为0.1,那么说明该搜索引擎更侧重链接对权重的影响,通过这样的算法,可以很轻松的算法上的调整。

以上只是举例,实际算法并不止以上三种,这些已经触及到我的知识盲区了,在大神面前,我是真的是菜逼(形容自己明明很菜又喜欢瞎BB的)。