页面

2016年9月5日星期一

在点击搜索引擎之后的零点几秒后到底发生了什么?

什么是搜索引擎

搜索引擎是一个帮助用户搜索他们需要内容的计算机程序。换一种说法,搜索引擎把计算机中存储的信息与用户的信息需求(information need)相匹配,并把匹配的结果展示出来。
举个例子:大黄想卖肾买个 iPhone ,就查一下价格。它在 Google 的搜索框里输入了“iPhone 6 售价”,点击搜索按钮。这里大黄的关键词“iPhone 6 售价”就是他的信息需求。Google 在展示出搜索结果的那零点几秒之间,它的程序在巨大的数据库里按照关键字进行了查找,终于计算出所有关于 iPhone 价格的网页。



网络爬虫

互联网上的信息存储在无数个服务器上,任何搜索引擎要想回答用户的搜索,首先要把网页存在自己本地的服务器上,这靠的就是网络爬虫。它不停的向各种网站发送请求,将所得到的网页存储起来。那么它怎么知道往哪发送请求呢?通常的做法是利用网页之间的链接从一个网页出发,提取出指向其他页面的链接,把它们当成将下次要请求的对象,不停重复这个过程。有很多细节要被考虑。比如避免循环链接的网页;解析网页文档(通常是 html 格式,但也有很多其他格式)提取里边的链接;当链接无法打开时对错误进行处理等。
出于安全等因素考虑,很多网络服务器都有反恶意爬虫的功能。尽管他们所采取策略各不相同,共同点是他们目标就是尽量只响应真人用户的请求。但搜索引擎爬虫通常不需要担心这一点,因为大部分网站都希望提高自己的搜索排名,欢迎搜索引擎爬虫到访。通常 Google 等搜索引擎都和网站之间有约定,比如在网页上加个特殊标签,告诉爬虫这个网页是什么类型,包含什么信息等,以便帮助爬虫更好的获取该网页内容。

索引

互联网上的数据千千万万,大海捞针的搜索怎么就这么快?难道 Google 发明了什么逆天科技吗?其实不是。这都要归功于搜索引擎的索引了。
互联网内容是不停变化的,这必然导致索引不停被更新。然而建立好的索引中,各个单词的反转列表是紧密的拼接在一起的,这使得更新变得非常困难。通常搜索引擎会积攒一批文件后才进行索引的更改,并且把索引分成静态和动态两个部分。程序把所有更改都写入动态部分,并且周期性地将动态部分合并进静态部分中。搜索时,动态和静态部分都会被访问。当从索引中删除一个文档时,这个文档中出现的词对应的反转列表都会被修改,开销极大。于是程序加入了“删除列表(delete lists)”来记录所有被删除的文档。搜索时会查询删除列表来把已经被删除的文档从搜索结果中移除。当删除列表足够大,垃圾回收机制会被触发,重新生成索引。

搜索

有了索引,就可以快速找到所需内容了。前边说过搜索引擎根据用户的信息需求查找匹配的内容。信息需求来自于用户输入。如何理解它有很大学问。简单的说,大黄的搜索词“iPhone 6 售价”会被解析成一个树形结构:叶子节点就是一个个关键词,非叶子结点是搜索引擎自己定义的查询运算符(query operator)。比如大黄的输入可以被解析成 AND(TERM(iPhone 6),TERM(售价) )
搜索引擎也可能会根据查询的类型选择不同的方法生成解析树。具体如何解析是没有定论的,加权操作中每部分的权重也没有定论。这需要根据历史数据做大量实验最终确定参数。总之,以上技巧最终目标是帮助搜索引擎更好理解用户的信息需求,以便查找出更高质量的文档。

PageRank 分数

PageRank 是 Google 创始人 Larry Page 和 Sergey Brin 当年在斯坦福读博期间搞出来的一个算法。凭借此算法他们创立 Google,迎娶白富美走向人生巅峰的故事早已成为佳话。它的作用就是对网页的重要性打分。假设有网页 A 和 B,A 有链接指向 B。如果 A 是一个重要网页,B 的重要性也被提升。这种机制可靠的惩罚了没有被别的链接指向的欺诈网站。

总结

搜索引擎是各种高深的算法和复杂的系统实现的完美结合,每一部分都在系统里起到关键作用。 

您可能感兴趣:
怎么上Google?怎么上instagram怎么上Facebook?

Android 用户福利:VPN APP免费使用14天!

带上这9 个APP,让你拥有更给力的旅途

扎克伯格的Facebook进华梦


没有评论:

发表评论