SEO 百科
索引
本页目录
索引是搜索引擎用来存放网页信息的大型数据库[1][2]。用户之所以能在瞬间拿到结果,正是因为有了它:引擎先找到网页、下载、读懂,把处理后的信息汇总进这个库,等到有人查询时,再从库里把匹配的挑选出来。
对做网站的人来说,最该关注的正是这一步。一个网页在这一步没能进入索引,用户搜索时就搜不到它。所以,想让用户通过搜索看到你的网页,第一步就必须让它进入索引。后面的标题、内容、链接做得再好,只要没进索引,用户就看不到,也就谈不上任何效果。
索引编制
抓取网页后,引擎不会把网页原样存起来,而是先尝试了解它的内容[1]。原因在于,网页是写给人看的,写法五花八门,同一件事可以有很多种写法。引擎没法直接拿两个网页的字面去比较,只能先把页面读一遍,从中抽出自己能理解、也能互相对照的成分。
它分析的对象有两类。一类是正文文字,也就是用户在页面上读到的内容。另一类是关键标记,不显示在页面上,却把页面的身份说清楚了。比如 title 元素给出标题,图片的 alt 属性说明这张图画的是什么。图片和视频本身也会被分析,引擎收的不只是文字。
分析出来的信息不会原样堆放,而是连同后面收集的信号一起存进索引,并按便于快速查找的方式组织起来。这样安排,是为了让后面的查询在极短时间内完成。
索引的内容
索引是托管在数千台计算机上的大型数据库[1]。用这么多台机器,是因为要收的网页以数十亿计,而且每一条都要能被随时查出来。单台机器承受不了这个数量,也做不到这个速度。
库里存的主要是两类东西。一类是关于网页本身的,哪个网址对应哪篇内容,这篇内容是什么,它又属于哪个网页群组。另一类是引擎在收录过程中收集的信号,比如网页用什么语言写的,内容面向哪个国家和地区,网页好不好用[1]。信号不是给用户看的,是留给下一步做判断用的。用户在结果页上看不到信号,这些信号却在背后影响用户能看到什么。
规范网页与网页群组
网上常有内容相近的多个网页。同一篇文章可能挂着几个网址,电商的商品页还带着各种筛选参数。如果每一个都当成独立网页收进来,会发生两件坏事:库里会挤满重复内容,用户也会看到一堆几乎相同的结果。
引擎的办法是先聚类。它把内容相近的网页归成一组,再从组里挑出最有代表性的一个,作为规范网页。这个规范网页,才是可能出现在搜索结果里的那个版本[1][3]。挑哪一个当代表,看的是谁最能代表这一组的内容,不是随机的。
引擎并没有删除组里其余的网页,也没有当成垃圾。它们作为备用版本留着,只有在特定情况下才会被选用。比如用户在手机上搜索时,或者用户要找的正是这一组里的某个具体网页时[1]。所以,同一个内容有多个网址,不一定互相冲突,引擎会替你把它们归为一组。
网站也能参与挑选,用 rel="canonical" 指向自己希望当代表的那个网址:
<head>
<link rel="canonical" href="https://www.example.com/products/cnc-machine">
</head>
收录结果
进了索引编制这一环,不等于就能被收录。引擎并不保证一定收录,处理过的网页里,相当一部分也进不了索引[1]。
进不去的原因可以分三类。
| 原因类别 | 表现 |
|---|---|
| 内容 | 网页本身质量低,没有值得收录的信息 |
| 声明 | 网站用 robots meta 明确表示不要收录这一页,这是主动指令,引擎会照办 |
| 实现 | 网站的设计让引擎读不懂内容,比如关键内容依赖复杂脚本才显示,引擎看不到 |
这三类原因的表现都是“没被收录”,但落点完全不同,一个在内容,一个在声明,一个在实现。排查的时候要先分清属于哪一类,因为三者的改法互不通用。
索引的用途
索引是给呈现阶段用的。用户输入查询时,机器在索引里找匹配的网页,再按相关度排序返回[1]。相关度由数百个因素决定,其中包括用户的位置、语言和设备。所以同一个查询,在不同地方、不同设备上,给出的结果并不一样。
索引里有什么、以什么形式存在,直接决定了搜索结果里能出现什么。索引因此不是一个中立的仓库,它的组织方式本身就带着判断:哪些网页被并成一个群组,哪一个是规范版本,附带哪些信号,都会一层层影响后面的结果。一个页面没进索引,后面的一切优化都无从谈起。
附录
参见
参考资料
官方(境外)
- 《关于 Google 搜索运作方式的深度指南》,Google 搜索中心。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台。
第三方
外部链接
无。