这几天把zac的第四版实战密码给入手了,仔细的翻了翻,看到原理和机制这里有一些新的东西和说法出现,就像结合一些实际的经验和数据来聊一聊这些原理说明、顺便讲一讲自己遇到的一些疑难杂症、若是能相互答疑解惑当然是最好的情况了;这篇可能会比较长,前半部分是原理的一些概述说明和一些个人觉得需要很好理解的一些细节;

搜索引擎的工作过程大致分为三个阶段;

  • 爬行和抓取:搜索引擎通过通过跟踪连接发现和访问页面,读取页面html代码、随后存入数据库;
  • 预处理:索引程序对抓取来的页面数据进行文字提取,中文分词,索引、倒排索引等处理、以备排名程序调用;
  • 排名:用户键入查询后、排名程序调用索引程序库数据,计算相关性,然后按一定的格式生成搜索结果页面;

其实上面简单的三个过程介绍、涵盖了在实际操作过程的很多很多的操作细节要求;下面就分开讲聊这些环节和其对应需要注意的内容细节;

1.爬行和抓取; 是搜索引擎工作的第一步、为了完成数据收集的任务

  • 蜘蛛会先访问站点根目录下的robots文件,然后会遵守协议、对允许的网址进行爬行和跟踪;
  • 跟踪链接;蜘蛛需要采取一定的基于图论的爬行策略才能遍历网上所有的页面;可以分两种,一种是深度优先、一种是广度优先,两种通常是混合使用的,这样既可以照顾到尽量多的网站(广度优先),也能照顾到一部分网站的内页(深度优先);同时也会考虑页面权重,网站规模、外链、更新等因素;
  • 吸引蜘蛛;蜘蛛所要做的就是尽量抓取重要的页面、seo人员想提升收录的数量和效率,需要注重下面几个方面的因素影响:1,网站和页面权重,质量高、资格老的网站被认为权重比较高,这种网站上的页面被爬行的深度也会比较高,所以有更多内页被收录的机会;2,页面更新程度;蜘蛛经过多次抓取后,会对页面的更新频率有一定的了解,页面的经常更新会吸引蜘蛛更频繁的访问页面、页面上出现的一些链接、也自然会被蜘蛛更快的跟踪,3,导入链接;无论是外部链接还是同一网站的内部链接,要被蜘蛛抓取,就必须要有进入页面的导入链接,否则蜘蛛根本不知道页面的存在,高质量的导入链接页经常使页面上上的导入导出链接被爬行的深度增加;4,与首页的点击距离,一般情况下网站权重最高的是首页,大部分外链也是指向首页的、蜘蛛访问最频繁的也是首页,与首页点击距离最近,页面权重越高,被爬行的机会也是越大,5,url结构;页面权重是收录并进行迭代计算后才知道的,页面权重越高越有利于被抓取、蜘蛛在抓取前会对页面有个权重预判,除了链接,与首页距离、历史数据等因素,短的,层次浅的url也可能被直观地认为在网站上的权重相对较高;
  • 地址库及调度系统;为了避免重复爬行网址,搜索引擎会建立地址库,记录已经被发现但是还没有抓取的页面、以及已经被抓取的页面,蜘蛛在页面发现链接后并不是马上访问、而是讲url存入地址库,然后统一由调度系统安排抓取;地址库中的url有一下几个来源;1,人工录入的种子网站,2,蜘蛛抓取页面后,从HTML中解析出新的链接url,与地址库中的数据进行对比,如果地址库中没有的网址,就存入有待访问的地址库,3,站长主动通过提交表格提交进来的网址,4,站长通过xml网站地图,站长平台提交的网址;蜘蛛按重要性从待访问的地址库中提取url,访问并抓取页面,然后把这个url从待访问的地址库中删除,存放到已访问的地址库中;无论是通过地图还是表格提交的网址、只是存入地址库而已、是否抓取和收录取决于其页面的重要性和质量;
  • 文件存储;搜索引擎蜘蛛抓取的数据存入原始页面数据库;
  • 爬行时的复制内容的检测;检测并删除复制内容通常是在下面的预处理过程中进行的,但现在蜘蛛在爬行和抓取文件时、也会进行一定程度的复制内容检测,若发现权重很低的网站上出现大量转载和抄袭的内容、蜘蛛很可能不在继续爬行;

2;预处理, 预处理也被简称为索引,索引是预处理的最主要内容,抓取过来的页面必须进行预处理,为最后的查询排名做好准备;

  • 提取文字,现在的搜索引擎还是以文字为基础的,搜索引擎在预处理时,首先要做的就是从HTML中去除标签,程序,并提取出可以用于排名处理的页面文字内容,也会提取出一些包含文字信息的特殊代码,如meta信息中的文字、图片替代文字、链接锚文字等
  • 中文分词,中文分词基本上有两种,一种是基于词典匹配、一种是基于统计;中文分词的准确性往往会影响搜索引擎排名的相关性、搜索引擎对页面分词情况取决于词库的规模,准确性和分词算法的好坏,而不是取决于页面本身如何,所以seo人员对分词所能做的工作很少、唯一能做的就是在页面上用某种形式提示搜索引擎、某几个字应该被作一个词来处理,尤其是可能产生歧义的时候,可以用黑体斜体这样的形式来标识,
  • 去停止词,无论是英文还是中文、页面内容中都会有一些出现频率很高、却对内容没有实质影响的词、如常用的语气词、介词、副词等、这些词被称为停止词、搜素引擎在索引页面内容之前都会去掉这些停止词、使索引数据主题更为突出、减少无谓的计算量、
  • 消除噪声,绝大部分页面上还有一部分对页面主题没有什么贡献的内容,
  • 去重;搜索引擎还需要对页面进行去重处理;
  • 正向索引;搜索引擎索引程序将页面和关键词形成的表结构存储进索引库;
  • 倒排索引;关键词是主键,每个关键词都对应这一系列文件;
  • 链接关系计算;现在所有的主流搜索引擎排名因素中,都包含网页之间的链接流动信息,搜索引擎在抓取页面内容后、必须事前计算出页面上有哪些链接指向哪些其它页面、每个页面有哪些导入链接,链接使用了什么锚文字,这些复杂的链接指向关系形成了网站和页面的链接权重;
  • 特殊文件的处理;目前的搜索引擎对图片、视频、脚本和程序等非文字内容只能进行有限的处理;
  • 质量判断;在预处理阶段,搜索引擎会也页面质量、链接质量等作出判断、包含较多因素、并不局限于针对关键词的提取和计算、或者针对链接进行数值计算、比如对页面内容的判断、很可能包括了用户体验,页面排版,广告布局、语法、页面打开速度等、也可能会涉及模式识别、机器学些、人工智能等方法。

3;排名

  • 搜索词处理;1,中文分词,2,去停止词,3,指令处理,4,拼写错误和矫正,5 整合搜索触发、6 搜索框提示 7 理解搜索真实意图
  • 文件匹配;搜索词经过处理后、搜索引擎得到的以词为基础的关键词集合,文件匹配阶段就是找出包含这些搜索关键词的所有文件,倒排索引是的文件匹配能够快速完成;
  • 初始子集的选择;找到包含所有关键词的匹配文件后,在相关性计算之前、会选择用于计算的一个初始子集,必须依靠其它特征而不是相关性,其中最主要的就是页面权重,初始子集的数目并未可知、不过当匹配页面数目巨大时,搜索引擎不会对这么多页面进行实时计算,而必须选出页面权重较高的一个子集作为初始子集,再对自己中的页面进行相关性计算;
  • 相关性计算;相关性等于词频乘以逆文件频率;关键词出现的次数越多、词频越大、文件与关键词的相关性越高、不过存在几个问题:1,很容易为认为提高、2 没有考虑文件的篇幅、真正使用要考虑关键词的密度、3.没有考虑关键词的常用程度 ; 逆文件率代表了关键词的常用程度、语言中越常用的词、包含这个词的文件总数越多、文件频率就越高、逆文件率越低、关键词与文件的相关性就越低、所以逆文件频率代表了这个词的语义重要性和其对相关性的贡献程度,或者说是区别文件的能力,越不常用的词对文件的相关性的贡献就越大,常用的词的极致就是停止词、对页面意义完全没有影响;所以搜索引擎对搜索词字符串中的关键词进行处理时并不是一视同仁的会根据其常用程度进行加权、不常用的词加权系数高、常用词加权系数低,排名算法对不常用的词汇基于更多关注;除了排名算法算法外、可能还考虑:1 关键词的位置和行形式,关键词越是出现在页面比较重要的位置、如标题、黑体、h标签等、就说明页面与关键词越相关  2 关键词距离  3 链接分析及页面中,这其中最重要的是锚文字,页面有越多以查询词为锚文字的导入链接、就说明页面的相关性越强,链接分析还包括了链接源页面本身的主题、锚文字周围的文字等;
  • 排名过滤及调整;
  • 排名显示;
  • 搜索缓存
  • 查询及点击日志;搜索用户的IP地址、搜索词、搜索时间、以及点击了那些结果页面、搜索引擎都会记录并形成日志、这些日志文件中的数据对搜索引擎判断搜索结果质量、调整搜索算法、预期搜索趋势、开发人工智能算法等都具有重要的意义

发表评论