什么是搜索引擎
一种在线搜索工具,旨在根据用户的搜索查询在网络上收集合适的网站存入自己的数据库中,然后使用独特的算法对它们进行排序。当用户在搜索框输入关键词时,搜索引擎就会将对应的内容展示给用户。我们可以举个例子:
当我们想知道秋天有哪些值得去的景点的时候,就可以在搜索框中输入“10月份适合去哪里旅游”,一秒不到的时间,谷歌或百度等搜索引擎就会在它们庞大的数据库中进行内容匹配,然后 SERP 页面就会展示出我们想要的结果。
搜索引擎的工作原理
用几句话简单概括就是:
爬行:搜索引擎先在互联网上收集信息(这个过程会一直持续进行),主要方法是跟踪已知的网页的链接,建立一个数据库。
索引:然后分析网页主题,对这些信息创建一个索引。
排名:当用户输入查询词后,谷歌会使用预先归纳编排好的索引查找匹配页面,按排名因素排好序,再在 SERP 页面将内容展示给用户。
爬行
搜索引擎怎么收集数据
搜索引擎会派出一个抓取文件的程序用来发现新网页,通常被称为蜘蛛或爬虫。蜘蛛访问页面时,会发出访问请求,然后服务器返回 HTML 代码,将收到的代码存入数据库中。
常见的蜘蛛有谷歌蜘蛛、百度蜘蛛、Bing蜘蛛、Yahoo! 蜘蛛等。
新页面如何被收录
爬虫发现新页面的主要跟踪方法是已知的网页中的链接。从A页面上的超链接可以发现B页面、C页面等,搜索引擎蜘蛛会将这些网页存储起来,当做下次访问的对象。正是基于这点,所以我们要避免某个网页成为“孤岛页面”,也就是没有任何链接指向它。
查看网站有多少页面被收录
可以用 site 指令来查看我们网站有多少页面被搜索引擎收录了,site:domain.com。如果想知道更多的搜索指令,可以查看这篇文章,里面详细介绍了10几种不同的谷歌高级搜索指令。
什么是 robots.txt
robots.txt 文件可以指定那些我们不希望被爬虫访问的页面,比如,管理页面、登录页面或者其他不重要的页面等。这样做的原因是,一般来说搜索引擎分配给每个网站的爬行预算是固定的,如果我们将预算浪费在不重要的页面,那么相对应的,我们那些重要的页面,比如产品分类页,产品详情页,被收录的概率就会变低。下方是淘宝的 robots.txt:
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
什么是站点地图
站点地图可以列出网站上所有的页面,比如产品分类,产品详情页,新闻博客页等。我们将站点地图提交给搜索引擎,可能会帮助爬虫更快地发现我们的网站。谷歌是在谷歌站长后台提交站点地图,其他搜索引擎同理。
索引
为什么要建立索引
索引的主要目的就是为了帮助程序进行快速查找。我们可以设想一个场景,如果让我们自己在杂货摊里找某一样商品,想快速找到我们想要的东西是不是很困难?
但是如果杂货摊变成百货超市那种摆设方式呢?根据头顶的指示牌我们是不是能立马知道我们想要的商品是在哪个分区?然后到对应的货架前找到自己想要的物品。索引就是起到一个类似的目的,主要方式是正向索引和倒排索引。
为什么要关心索引过程
因为当用户在搜索引擎中键入查询时,搜索引擎并不是直接在 Internet 上进行搜索,而是在搜索它们已经储存的网页索引。所以如果我们的网页没有在索引并收录,那么用户就不会发现它。
索引词处理
去除停止词:频率很高,却对内容没什么影响的词,常见的英文有 the、a、an、to、of,中文有“的、地、得、啊、哈、呀”等。
文档解析和处理
经过文字处理后,搜索引擎得到的就是能反映页面主要内容的字符串,然后再按照正向索引(文件对应的关键词有哪些)和倒排索引(出现该关键词对应的文档有哪些)处理文档。
正向索引
每个文档都对应一个文件ID,文件内容就是一串关键词(经过索引词处理之后)的集合,正向索引表中会记录每个关键词的位置信息、出现次数等。简化的索引表如下图所示:
文件 ID | 关键词列表(次数) |
文件1 | 关键词1(3),关键词2(3),关键词5(1),… |
文件2 | 关键词2(2),关键词3(4),关键词4(3),… |
文件3 | 关键词1(5),关键词4(2),关键词7(3),… |
… | … |
简化的正向索引表
倒排索引或反向索引
倒排索引是以关键词进行索引,整理出包含这些词条的文档编号的集合。简化的索引表如下图所示:
关键词列表 | 文件 ID |
关键词1 | 文件1,文件3,文件8,… |
关键词2 | 文件1,文件2,文件11,… |
关键词3 | 文件2,文件7,文件15,… |
… | … |
简化的倒排索引表
排名
总算来到排名这一步了,当用户在搜索框中输入查询关键词时,搜索引擎会调用索引库数据,并计算文档与关键词的相关性,然后生成搜索引擎结果页。那么搜索引擎算法具体是怎么工作的呢?
经过多年的发展,谷歌的页面排名规则已经超过了200多条,但是没有人知道具体规则是什么。网上的大牛们更多的是通过经验以及测试推测出某些排名因素。
分析用户查询意图
搜索引擎第一步需要知道的是用户想要找什么样的信息,这时候,上个步骤的倒序索引就派上用场了。
比如,当用户输入“如何制作慕斯蛋糕”时,搜索引擎会分析这个查询背后所代表的意思,分析之后得知用户是在寻找制作慕斯蛋糕的教程说明时,返回的结果页就会包含食谱类烹饪网站。
如果用户输入“购买慕斯蛋糕”时,搜索引擎会根据“购买”这个关键词分析得出用户现在正在寻找要购买的东西,因此返回的结果可能包括电子商务网站和在线商店。
查找匹配页面
当搜索引擎确定了用户的搜索意图之后,第二步就是查看它们的索引库,然后筛选符合查询意图的网页。这是整个过程中非常重要的一个阶段,搜索引擎需要以最快的速度返回最准确的结果,这样才能让用户满意。
常见的排名因素
内容相关性
页面标题与内容与用户查询关键词的相关性,相关性越高的页面,排名就越靠前,也越能满足用户需求,用户不需要再点开后方的结果就已经知道答案了。
内容质量
现在越来越提倡高质量内容输出了,也就是说哪怕你的内容相关性很高,但是其质量低下,也很难获得很好的排名。比如页面充斥了关键词堆砌、来源模糊的信息,重复度很高等。
链接权重
链接主要有站内链接和站外链接两种,某种角度上来说,某个页面得到的链接越多,在一定程度上反映了该页面越重要,相对应的链接权重也就越高。
页面加载速度
现在这年代,网页的加载速度越来越重要了,每个人愿意在我们网页上停留的时间可能1秒都不到。这时候如果我们页面要过好几秒才能加载成功,用户可能早就不耐烦的关闭网页走人了。那我们前面做了那么多高质量的内容也就失去了意义,所以日常工作中需要做好移动端以及 PC 端的结构优化,去掉冗余的代码,提升网页加载速度。
总结
搜索引擎的工作原理远比上方写的还要复杂千百倍,还有很多内容没有提及,比如本地搜索、千人千面、历史搜索习惯等。作为网站管理员,我们的主要工作就是创建结构简单、清晰明了的网站来降低搜素引擎爬虫的抓取和索引难度。一旦它们能毫无阻碍地“看懂”我们的网站,我们取得更好的排名的机会也就越大。