3.搜索引擎如何建立索引

type
status
date
slug
summary
tags
category
icon
password
💡
这个过程专门适用于Google,但对于其他网络搜索引擎(如Bing)可能非常相似。

所搜引擎工作的核心步骤

搜索引擎流程
搜索引擎流程

索引

索引是搜索引擎工作的第一步,
notion image

步骤 1. 获取URL

搜索引擎主要有三种方式获知您的网页地址。Google通过多种方式发现这些URL,但最常见的三种是:
  1. 通过外链
    1. Google已建立了一个包含数万亿个网页的索引库。如果其中某个页面有链接到您的网站,Google就可以从这些页面中发现您的链接。
  1. 来自网站地图
    1. 一个站点地图(sitemap.xml)列出了你网站上的所有重要页面。如果你将站点地图提交给 Google,则可以帮助他们更快地找到你的网站。
  1. 来自 URL 提交
    1. Google 还允许通过 Google Search Console 提交单个URL。
 

步骤 2. 抓取

抓取是指由称为蜘蛛的抓取程序(例如Googlebot)访问并下载发现的页面的过程,爬虫蜘蛛就像是搜索引擎派出去的调查员,他们负责获取页面的数据。
notion image
需要注意的是,Google并不总是按照发现页面的顺序对其进行抓取。Google会根据以下因素对要抓取的URL进行排序:
  • URL的变化频率
  • 是否为新页面
这一点非常重要,因为这意味着搜索引擎可能会优先抓取和索引一些页面而不是其他页面。如果您的网站很大,搜索引擎可能需要一段时间才能完全抓取它。

内容分类

你的站点内容很可能会影响搜索引擎抓取的策略,通常我将站点内容归为4类:
  1. 原创内容
  1. 转载内容
    1. 与原创页面正文内容相同或相近的页面
  1. 镜像内容
    1. 与原创页面布局样式、正文内容完全相同的页面
  1. 镜像网站
    1. 整个站点的内容、样式与原创站点完全一致,也常被称为“钓鱼网站”。
💡
搜索引擎更加青睐是原创内容,不推荐完全复制别的站点内容。

维护更新

站点内容通常是不断更新的,因此数据的抓取也不是一次性的;搜索引擎通常会采用定期抓取、增量抓取的方式来获取新数据。
1.定期抓取
定期抓取也称为周期性抓取,即搜索引擎周期性地对网站中已收录的页面进行全面更新。
2.增量抓取
增量抓取是通过对已抓取的页面进行定时监控,实现对页面的更新及维护
3.分类定位抓取
与增量抓取由页面重要性决定不同,分类定位抓取是指根据页面的类别或性质而制定相应更新周期的页面监控方式。
 
实际上,搜索引擎对网站中页面的维护也是结合多种方式进行的。相当于间接为每一个页面选择最合适的维护方式。这样,既可以减少搜索引擎的负担,又可以为用户提供及时的信息。 例如在一个网站中,会存在多种不同性质的页面,常见的包括首页、论坛公告、文章内容页面等。对于更新比较频繁的页面(如首页)可以使用增量抓取方式对其进行监控,这样就可以对网站中相对重要的页面进行及时更新;而对于实时性非常高的论坛页面,则可以采用分类定位的抓取方式;为了防止遗漏网站中的某些页面,还需要采用定期抓取的方式。

步骤 3. 处理分析

💡
页面抓取只是搜索引擎工作的一个基础环节,页面抓取回来后并不代表搜索引擎马上就能向终端用户提供查询服务。
因为用户在使用搜索引擎进行查询时,使用的是一个词或者短语,而到目前为止,搜索引擎仅能提供整个原始页面,还不能返回与用户查询条件相匹配的信息。因此,搜索引擎需要对原始页面进行一系列的分析、处理,以迎合用户信息查询的习惯。
在处理阶段,Google会从抓取的页面中提取关键信息。
对于这个过程的细节,除了Google之外的其他人并不清楚,但我们认为其中的关键部分包括提取链接、存储内容和进行索引。

渲染处理

Google必须渲染页面以对其进行完全处理,它会运行页面的代码以了解其对用户的影响。如何理解?
假如这是你的网站https://baidu.com/; 谷歌爬虫访问您的站点后获取的内容是以下信息:
notion image
它看起来有各种各样的文字脚本,搜索引擎大可以将这些代码的文字作为关键词录入到数据库,但是这确实是用户想要的吗?
页面中还有大量的样式style、事件javascript、图片img,这些脚本语句只有真正渲染成页面后,才知道体验如何,信息是否是用户所需要的。
因此谷歌除了会将原始文本进行索引,还会借助其渲染引擎Blink,将html信息转化为用户实际看到的网页效果,然后再对其内容进行摘录索引。
notion image
谷歌搜索的渲染引擎Blink是基于WebKit的一个分支技术,它负责将网页的HTML、CSS和JavaScript代码转换成用户可以看到的视觉内容。在渲染HTML和CSS方面,Blink引擎与Chrome浏览器中使用的渲染引擎是相同的,在执行JavaScript方面,Blink引擎使用的是V8 JavaScript引擎,这也是Chrome浏览器默认使用的JavaScript引擎。
65.4%的浏览器市场份额
65.4%的浏览器市场份额
由于Chrome浏览器在市场上的主导地位,谷歌的开发团队通常会优先确保谷歌搜索引擎在Chrome浏览器上的性能和兼容性。这意味着在开发谷歌搜索引擎的渲染引擎时,他们可能会更多地考虑Chrome浏览器的特性和性能优化。
Chome浏览器+Google搜索引擎强强联合,相辅相成。
 

步骤 4. 索引收录

索引是将抓取的页面信息添加到名为搜索索引的大型数据库中。
notion image
实质上,这是一个由数万亿个网页组成的数字图书馆,Google的搜索结果就是从这里得到的。
这一点非常重要。当你在搜索引擎中进行搜索时,你实际上是在搜索这个搜索索引中的内容,而不是直接在互联网上搜索。如果某个网页不在搜索索引中,搜索引擎用户将无法找到它。这就是为什么在Google、Bing等主要搜索引擎中让你的网站建立索引如此重要的原因。

什么是索引?

可以理解为一个目录,就像我们在查字典时,会以文字的偏旁部首、或者拼音排序来快速定位要查找的文字位置。
notion image

分词切词技术

搜索引擎为了更好地存储、归类以及便于后续快速的查询索引,用到了分词切词的技术;通过爬虫抓取的大段网页内容将最终被切分成不同长度的单词片段,并归类到索引数据库中,举一个电商可能会用到的标题词:
官方旗舰店飞利浦干湿两用便携式三刀头旋转式无线充电电动剃须刀男士2024进口新款
搜索引擎在你的网页上抓取到了这段内容后,会将这段文字切分成以下但不限于以下内容的的索引,通过这些关键词,都能搜索到你的文章内容
电动剃须刀
电动剃须刀男士
电动剃须刀男士2024
电动剃须刀进口
电动剃须刀进口新款
电动剃须刀男士2024进口新款
飞利浦电动剃须刀
飞利浦干湿两用电动剃须刀
店飞利浦干湿两用便携式电动剃须刀
…(这里省略无数种排列组合)
正是由于强大的切分词,索引技术,搜索引擎可以在0.00001秒内,从上千亿条数据中,瞬间找到你需要的内容。
 

中英文切分词技术的区别

在搜索引擎中,分词技术是将文本中的汉字序列切分成有意义的词组的关键步骤。
这对于中文信息和英文信息之间存在差异的情况尤为重要。英文单词之间使用空格分隔,但中文没有天然的语法空格和边界,因此搜索引擎必须将整个句子切割成小单元词。
在中文搜索索引中,常常要面临以下几个问题:
  1. 缓解一词多义问题:在中文场景中,不同的字在不同的上下文中表达的意义截然不同。例如,“哈哈哈”和“哈士奇”中的“哈”含义不同。好的分词可以提供更高级别的文本特征,从而使搜索引擎对文本的理解从“字序列”升级为“词序列”。
  1. 提供更高级别的文本特征:词序列包含部分实体、意图等信息,特征的信息量往往大于字序列。因此,分词可以为NLP模型提供更好的特征。

中文分词技术难点:

  1. 歧义问题:一词多义和切词歧义是中文下的常见问题。例如,“武汉市长江大桥”和“无线电法国别研究”就存在不同的切词方式。
  1. 未登录词问题:一些不在词库中的词容易导致分词器给出不合理的结果。
  1. 规范问题:中文语法的特殊性使得词与词之间没有明确的边界,容易出现公说公有理婆说婆有理的情况。

主流分词技术

  1. 基于规则分词
      • 正向最长匹配FMM:从句子开头开始查找字典,每次找到以当前字开头的最长单词时,得到一个对应切分词。
      • 逆向最长匹配RMM:从句子结尾反过来寻找每个字往前找的最大词块。
      • 双向最长匹配BMM:结合FMM和RMM,降低歧义词的分词错误率。
  1. 基于统计机器学习分词
      • 语言模型:计算出分词概率最大路径,通常采用2-gram或N-gram模型。
      • 序列标注模型:例如HMM,用于标注每个字的词性。
以上我们技术的内核,我们只做到点到为止。希望了解可以参考相关论文
 
上一篇
2.搜索引擎发展历史
下一篇
4.搜索引擎如何排名
Loading...