Google搜索引擎工作原理简介
实在是写不出来高质量的原创文章,今天再次转载一篇网络上看到的文章吧,叫Google搜索引擎工作原理简介,其中比较详细的介绍和分析了google搜索引擎相关工作机制,下面是原文内容:
这篇文章是基于Google创始人Lawrence Page和Sergey Brin一篇早期的论文翻译整理简化而成。尽管Google一直在修正不同因素对网页的权重影响以期排除作弊网站对搜索结果的干扰和获得最好的搜索结果,但其核心思路并没有改。
Google采用了两个重要的特性,因此而获取了准确的查询结果:第一,Google利用网页的链接结构计算出每个网页的等级排名,这就是所谓的PageRank;第二,Google利用了链接提供的信息进一步改善搜索结果。
PageRank的计算:
PageRank的基本思路是:如果一个网也被其他网页多次指向,这就说明本网页比较重要或者质量较高。除了考虑网页链接数量之外,Google还 要参考链接网页本身的级别, 以及这个网页有多少正向链接到其它网页。当然“重要”的网页的链接就会有更高的权重。 PageRank的简化计算公式:
PR(A) = (1-d) + d (PR(T1)/C(T1) + … + PR(Tn)/C(Tn))
• PR(A) :网页A页的PageRank值;
• PR(Ti) :链接到A页的网页Ti的PageRank值;
• C(Ti) :网页Ti的出站链接数量;
• d :阻尼系数,0<d<1, 通常设为0.85
PageRank可以通过结合链接权重的向量矩阵的提归计算而获得(关于PageRank的深入分析,我在方便的时候会另外写一篇文章介绍)。
随机冲浪模型:
PageRank可以被理解为用户的一个行为模型。我们假设一个随机的网站浏览者”random surfer”给以一个随机的网页,他会继续点击网页中的链接直到他厌倦了而从新开始浏览一个新的随机的网页。PageRank可以理解为某个网页被随机 访问的概率。而阻尼系数d则是随机访客不顺着网页的链接继续浏览下去,而从新开始一个随机冲浪的概率。对有一些网页,可能会人为的改变它的阻尼系数, 这样就可以阻止一些作弊网站误导Google而获得较高的PageRank的可能性。
你也可以这样自觉理解PageRank:一个高PageRank的网页是那些有很多网页指向的网页,或者是有一些重要网页指向的网页。Google 假定,如果一个网页被很多其他不同的网页引用,就说明这个网也值得一看。另外,如果一个网页为yahoo这样的网站指向,也通常值得一看。
链接描述文本(anchor text)
Google对连接描述文字进行了特殊的处理。大多数的搜索引擎都是把链接文本和它所在的页面相关联,而Google还把链接文本和它指向的文档相关联。这样做的原因是链接描述往往提供了一个对被指向的网页更准确地描述。
除了PageRank和链接描述以外,Google还采用了一些其它的特性:首先,Google记录了所有关键字的位置信息(hits),它在搜索 中充分的使用了关键字的相关性分析。其次,Google记录了一些视觉信息,比如字体的大小等等。大字以及加粗的字体比网页中的其它字体有更高的权重。
另外,Google认为,不是直接呈现给访问者的的文本信息都可能被烂用, 并用以误导搜索引擎。所以Google对metadata的文本给以较小的重视。
系统结构分析:
Google的整体系统结构如图所示:
先由URLserver发送一系列的URL地址让网站爬虫crawlers去采集。网页采集后交给存储服务器Store server。存储服务器压缩网页内容后存放到信息仓库repository。所有的新的网页都被赋予一个docID。 索引功能由索引器indexer 和排序器sorter来执行完成。Indexer读取repository的文件,并将其转换为一系列的关键字排序,称为命中hits。Hits记录了关 键字,出现在文件的位置,字体的相对大小和字母的大小写。Indexer然后将这些hits放到一系列的桶barrels中,建立了部分排序的好了的正向 索引。Indexer还分离出网页中的所有链接,将重要的信息存放在Anchors文件之中。这个文件包含的信息可以确定链接的指向和链接的描述文本。
URLresolver读取Anchors文件并将相对URLs转换为绝对URLs,并依次放到docIDs中。它再将链接的描述文本放到正向索 引,并将docIDs与链接的描述文本相对应。同时,它也产生一个链接links和docIDs相对应的数据库。这个links数据库将被用于计算所有网 页的PageRanks。
然后,排序器sorter从barrels中取得按docID排序的网页,再将其按照wordID产生一个反向索引。Sorter还在反向索引产生 一个wordIDs及其偏移的列表。一个叫做DumpLexicon的程序将这个列表结合搜索引擎的词库再产生一个可以被搜索器searcher使用的新 的词库Lexicon。由网页服务器构成的搜索引擎Searcher利用这个新的词库配合反向索引和PageRanks来回答查询。
命中列表Hit Lists
命种列表Hit Lists记录了一系列的关键字出现在一个网页中的信息,包括在网页中的位置,字体的相对大小和字母的大小写。Hit Lists占用了正向和反向索引里的绝大部分的空间。
命中分为两类:特别命中fancy hits 和普通命中plain hits。fancy hits包括了在URL, 标题, anchor text, or meta tag出现的关键字, 所有在其它位置出现的关键字均为plain hits。一个plain hit由大小写位1 bit, 字体大小3bits和用来表示关键字在网页的位置所组成12位bits信息(所有位置大于4095的均表志为4096)。
正向索引:
正向索引由64个桶barrel组成。每个barrel存放了一个特定范围的wordID’s。如果一个网页包含的关键字属于某个barrel范围,这个 docID就记录到这个特定的barrel之中。docID与wordID’s以及这些关键字的命中列表hit lists一起记录在这个barrel中。
反向索引
反向索引与正向使用相同的barrels, 唯一的区别是反向索引由排序器sorter处理。对每一个有效的wordID, 词库lexicon中包含了指针指向具体的barrel。 它指向由docID组成的doclist列表,以及他们的所对应的命中列表hit lists。这个doclist代表了那个单词在所有文件中所出现的列表。
Google采用了两组反向索引inverted barrels。 一组包含了标题和anchor hits,另一组则包含所有的hits。 这样,google先检查第一组short barrels, 如果返回的匹配结果不够多,然后再查询第二组long barrels
Google查询流程如下:
1. 解析查询关键字
2. 转换关键字为wordIDs
3. 在短桶short barrels中寻找每个关键字在doclist的起点
4. 扫描这个doclists直到有个网页与查询全部匹配
5. 计算这个网页的查询排名Rank
6. 如果在短桶short barrels doclist列表已经查完,寻找每个关键字在长桶long barrels doclist的起点,重复第4步
7. 如果还没有查完doclist,重复第4步
8. 将匹配的网页根据计算出的rank排序,并返回前k个查询结果。
Google的排名系统
Google包含了比其它搜索引擎更多的网页信息。每一个hit list包含了位置,字体,大小写信息。另为Google还参考了anchor text以及网页的PageRank。 没有一个单一的因素会对搜索结果的排序产生太大的影响。
让我们来看一下单个关键字的查询:Google先查看对应于这个单词的网页的命中列表hit list。Google区分每个hit由几种不同的类型 (标题, anchor, URL, 大字体, 小字体等等), 每一种类型都有自己的类型权重type-weight。 这些type-weights 组成一个由类型向量。 Google计算每一种类型的命中记数,然后这些命中记数又转换为计数权重Count-weights。计数权重开始以线性增加,然后很快就逐渐停止,这 样太多的命中记数就会没有作用。Google在将Count-weights和type-weight相乘计算出网页的IR score。 最后这个IR score与PageRank相结合得到最终的搜索排序结果。
对于多关键词的搜索,计算方法就比较复杂一些。现在多个命中列表必须要全部扫描,这样对那些出现在文章中靠近的hits就比那些分开较远的hits 有更高的权重。 那些相接近的hits被匹配到一起,然后计算出这些相匹配的hits的相关度proximity。相关度是基于这些hits出现在文章中的距离决定的,并 被分为10个不同的值,分别表示为短语匹配(phrase match)到根本不匹配(not even close)。命中计数不仅计算每种类型,而且还计算每个类型和他们的相关度匹配。 每个类型和相关度配对有一个type-prox-weight权重。这个记数器被转换为计数权重。然后这个计数权重于与类型相关权重type-prox- weights相乘得到文章的IR score。当然最后是IR score与PageRank相结合得到最终的搜索排序结果。
最后的话
整理这篇文章的目的是为了让自己更好地了解Google搜索引擎,同时也希望能够帮助大家对Google的工作原理有一个大致的了解。如果你看了我的文章还是不太明白,英文原文可以在这里找到。
转载于:https://blog.51cto.com/decimal/758270
Google搜索引擎工作原理简介相关推荐
- php关键词分词搜索 最多匹配的排在最前面_百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客...
原出处:蜘蛛池博客 原文链接:百度搜索引擎工作原理,做Seo的建议看一看 - 蜘蛛池博客 从事SEO(搜索引擎优化)工作的人可以比喻成搜索引擎的贴身管家,作为一名合格称职的管家必须要了解所服务对象的习 ...
- 搜索引擎工作原理笔记
搜索引擎的工作过程大体可以分为三个阶段: 1.对网页进行抓取建库 搜索引擎蜘蛛通过抓取页面上的链接访问其他网页,将获得的HTML代码存入数据库 2.预处理 索引程序对抓取来的页面数据进行文字提取.中文 ...
- 图解搜索引擎工作原理
做SEO的,如果不懂搜索引擎的工作原理是很难恰当开展工作的.前几天给学生讲SEO课程中的搜索引擎工作原理时,很多同学表示不太懂.后来我画了搜索引擎主要工作流程的示意图给大家,很多同学表示"懂 ...
- WEB前端-搜索引擎工作原理与SEO优化
一.搜索引擎工作原理 搜索引擎的工作分为三个节点,即爬行,索引,和检索 1.爬行 搜索引擎具有网路爬虫或蜘蛛来执行爬网,每次抓取工具访问网页时,它都会复制该网页并将其网址添加到索引中. 在 " ...
- javascript原理_JavaScript程序包管理器工作原理简介
javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...
- Nginx 反向代理工作原理简介与配置详解
Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...
- 电容降压工作原理简介
电容降压工作原理简介 分类: 基础电路2009-04-16 16:42466人阅读评论(0)收藏举报 工作 电容降压的工作原理并不复杂.他的工作原理是利用电容在一定的交流信号频率下产生的容抗来限制最大 ...
- google authenticator python_谷歌验证器 Google Authenticator工作原理
很多人都听过谷歌验证 (Google Authenticator) 或用过谷歌验证 (Google Authenticator) .尤其是随着比特币等虚拟货币的兴起,各大交易所都要求绑定谷歌验证 (G ...
- 详解Google Authenticator工作原理
详解Google Authenticator工作原理 发表于2014-09-23 08:28| 10060次阅读| 来源CSDN| 16 条评论| 作者伍昆 Google二维码Google Au ...
最新文章
- 如何在团队中做好Code Review
- Linux 学习日记 2: 目录结构和文件操作
- 什么是现代通用计算机的轴型,大学计算机基础(版)各章节习题+答案.doc
- JAVA Roman to Integer 罗马数转换为int型方法
- YAML简介和简单说明
- 开发工程中遇到的BUG
- AbstractQueuedSynchronizer源码解析
- html2canvas保存网页到手机,利用html2canvas将当前网页保存为图片.
- 深度总结,带你玩转 NVIDIA GPU
- 尚学堂马士兵SSH笔记下载
- java 148. 排序链表
- android 字体显示框架,XUI 一个简洁而又优雅的Android原生UI框架
- IDEA社区版搭建web项目
- win10安装Docker Desktop完成之后打开一直显示Docker failed to initialize
- logo怎么设计才好看?好看的logo设计方法大公开。
- 史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!...
- 如何取消(或关闭)win2003中的ie增强安全配置
- 《我是歌手》网上报名评审
- 荣耀magic鸿蒙版,荣耀Magic正争取首发骁龙888 Pro;华为鸿首批推送无荣耀机型
- Android 安卓实现Neumorphism(新拟物化)UI控件