搜索引擎算法详解
一、搜索词处理
    当搜索引擎接收到用户输入的关键词后,需要对关键词做相应处理,才能进入排名过程。处理包括这么几个方面:
    1.中文分词 与页面索引一样,关键词也需要进行中文分词,将查询字符串转换为以词为基础的关键词组合。原理和页面分词相同。
    2.去停止词 跟索引时一样,搜索引擎也需要把关键词中的停止词去掉,为了提高排名相关性及效率。
    3.指令处理 关键词完成分伺候,搜索引擎的默认处理方式是在关键词之间使用“与”逻辑。也就是说用户搜索“SEO博客”时,程序分词为“SEO”和“博客”两个词,搜 索引擎排序时默认认为,用户寻的是既包含“SEO”,也包含“博客”的也页面。那么只包含“SEO”不包含“博客”,或者只包含“博客”不包含 “SEO”的页面,会被认为是不符合搜索条件的。当然,这只是一种简单的说法,其实内部处理还是相当复杂,实际上我们还是会看到只包含一部分关键词的搜索 结果,这里与网站权重,还有页面内容等等有密切关联。
    4.拼写错误矫正 用户如果不小心输入的错误的拼写单词或者英文单词,搜索引擎会提示用户
正确的单词。比如:用户输入“SEO技数”,搜索引擎将提示用户:您要的是不是“SEO技术”。
    5.整合搜索触发 有些关键词会触发整合搜索,比如明星姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容。什么词能够触发整合搜索,都是在关键词处理阶段进行处理。
二、文件匹配
    关键词经过处理后,搜索引擎得到的是以词为基础的关键词集合。文件匹配阶段就是出含有所有关键词的文件。在索引部分提到的倒排索引使得文件匹配能够快速 完成,假设用户搜索“关键词A 关键词B”,排名程序只要在倒排索引中到“关键词A”和“关键词B”这两个词,就能到分别含有这两个词的所有页面。经过简单计算就能出既包含“关键 词A”,又包含“关键词B”的所有页面。比如:“关键词A”中有文件1、文件3、文件6,“关键词B”中有文件2、文件4、文件6,那么既包含“关键词 A”又包含“关键词B”的页面就是文件6。
三、初始子集的选择
明星搜索    到关键词匹配文件之后,还不能进行相关性计算,因为到的文件会有几十万几百万,甚至上千万个。那么就需要对这些文件作相关性计算,这个时间还是比较长的。
    实际上用户根本不需要知道所有的匹配页面,绝大部分用户只会查看前两页,也就是前20个结果。因此,搜索引擎也没必要计算那么多页面的相关性,只要计算最 重要的一部分页面就可以了。经常使用搜索引擎的人都会注意到,搜索结果页面通常最多只显示100个。也就是1000个搜索结果。
    所以,搜索引擎只需要计算前1000个结果的相关性,就能满足用户要求。
    问题来了,那这么多相关性的文件,怎么才能知道哪1000个文件的相关性最高呢?所以用于最后相关性计算的初始页面子集起着相当重要的作用,现在就必须依 靠其他特征而不仅仅是相关性,其中最主要的就是页面的权重。由于所有匹配文件都已经具备基本的相关性(都包含所查询的关键词),搜索引擎通常会用非相关性 的页面特征挑选出一个初始子集。初始子集的数目是多少?几万个?或者更多,其实我们都不知道。不过可以肯定的是,当匹配页面数目巨大时,搜索引擎不会对这 么多页面进行计算,而必须选出页面权重较高的一个子集,再对子集中的页面进行相关性计算。
四、相关性计算
    选出初始子集后,对子集的页面计算关键词相关性。前一步关键词相关性是最基础的,这里的相关性计算在排名过程中起着最重要的一步。相关性计算是搜索引擎算法中最领SEO感
兴趣的部分。影响相关性的主要因素包括这么几个方面:
    1.关键词常用程度。
    经常分词后的多个关键词,对整个搜索字符串的意义贡献并不相同。越常用的词对搜索词的意义贡献越小,越不常用的词对搜索词的意义贡献越大。举个例子,假设 用户输入的搜索词是“我的SEO博客”,“我的”这个词常用程度非常高,在很多页面上会出现,它对“我的SEO博客”这个搜索词的辨识程度和意义相关度贡 献就很小。出那些包含“我们”这个词的页面,对搜索排名相关性几乎没什么影响,有太多页面包含“我的”这个词。
    “SEO博客”这个词相对于“我的”这个词来说常用程度还是比较低的,对于“我的SEO博客”这个搜索词的意义贡献要大的多。那些包含“SEO博客”这个 词的页面,对“我的SEO博客”这个搜索词会更为相关。常用词的极致就是停止词,对页面完全没有任何意义。
    所以搜索引擎对搜索词串中的关键词并不是一视同仁的处理,而是根据常用程度进行加权。不常用的词加权系数高,常用词加权系数低,排名算法对不常用的词给予更多关注,所以比较冷的词你稍微优化一下就上去了。
    另外,我们假设A、B两个页面同时出现“我的”及“SEO博客”这两个词。但是“我的”这个词在A页面内容中,“SEO博客”在A页面标题标签中。B页面 正好相反,“我们”出现在标题标签
中,而“SEO博客”在B页面内容中,那么针对“我的SEO博客”这个搜索词,A页面更相关。
    2.词频及密度。
    一般在认为没有关键词堆积的情况下,搜索词在页面中出现的次数越多,密度越高,说明页面与搜索词的相关性越高。当然这只是一个大致规律,实际情况未必如此,所以相关性计算还有其他因素。出现频率及密度只是因素的一部分,而且重要程度越来越低了。
    3.关键词位置及形式。
    如索引中提到的一样,页面关键词出现的格式和位置都被记录在索引库中。关键词出现在比较重要的位置,如标题标签、黑体、H1等,说明页面与关键词越相关。这一部分就是页面SEO所要解决的。
    4.关键词距离。
    切分后的关键词完整匹配的出现,说明与搜索词最相关。假设搜索“熊向阳博客”时,页面上连续完整的出现“熊向阳博客”这五个字是最相关的。如果“熊向阳” 和“博客”两个词没有连续匹配出现,出现的距离近些,也被搜索引擎认为相关性稍微大一些,太远相关性会越来越低甚至没有。
    5.链接分析及页面权重。
    除了页面本身的因素,页面之间的链接和权重关系也影响关键词的相关性,其中最重要的是锚文本。页面有越多以搜索词为锚文本的导入链接,说明页面的相关性越强。链接分析还包括了链接源页面本身的主题、锚文本周围的文字等。
五、排名过滤及调整
    选出匹配文件子集、计算相关性后,大体排名就已经确定了。之后搜索引擎可能还有一些过滤算法,对排名进行轻微调整,其中最主要的过滤就是施加惩罚。一些有 作弊嫌疑的页面,虽然按照正常的权重和相关性计算排在前面,但搜索引擎的惩罚算法却可能在最后一步把这些页面调到后面去。典型的例子是,百度的100 外,Google的负6、负30、负950等算法。
六、排名显示
    所有排名确定后,排名程序调用原始页面的标题标签、描述标签、快照日期等数据显示在页面上。有时候搜索引擎需要动态生成页面摘要,而不是调用页面本身的描述标签。