这就是搜索引擎--读书笔记一

这就是搜索引擎 -- 读书笔记一算法

相信搜索引擎对于每个爱好算法甚至爱好技术的IT人员都具备强烈的好奇心吧,由于搜索引擎在互联网中的地位实在是不可撼动。想象若是互联网没有了搜索引擎,那么咱们日常技术上出现瓶颈了怎么办?甚至连普通的生活都离不开搜索,大学生的你订餐了吗?缓存

搜索引擎已经发展为每一个人上网都离不开的重要工具,其技术发展历程是怎样的呢?其基本目标是什么?核心技术问题又是什么呢?在接下来的一系列博文中,我会根据读书和本身的总结用平乏的语言来表达出来,但愿对朋友们有所帮助。另外,博友们若是有好的相关资源,也感谢留言。网络

今天,我给你们讲解一下搜索引擎及其技术架构的基础知识,让咱们对搜索引擎有一个大体的了解。数据结构

商业搜索引擎公司的发展

在信息量快速增加的状况下,如何可以找到知足用户需求的网页内容就日益成为愈来愈重要的问题。信息增加速度越快,用户需求越迫切,相应的搜索结果就越要准确。大的搜索引擎公司就是在这个用户需求背景下,从创建到逐步壮大,乃至发展到今天搜索引擎成为最重要的互联网的应用。架构

早期时候,随着互联网的进一步的快速发展,信息的爆炸性增加,已有的搜索引擎服务提供商所提供的搜索服务质量并没有大的改善。Google于1998年成立,以PageRank连接分析等新技术大幅度提升了搜索质量,以后高速发展并抢占了绝大多数的搜索引擎市场,成为目前最重要的互联网之一。想一想为何搜索引擎公司这么看重搜索技术?就拿大学生订餐这一事情来讲,够实际吧,若是你订餐时查询到的前3页搜索结果都是已经售完了的饭菜品,那么此时饥饿的你感觉如何?相信你连揍死店家的冲动都有。在另一家外卖店的首页上,搜索第一条就是很新鲜的菜品,你会选择哪一家外卖店呢?工具

搜索引擎技术发展史

从搜索引擎所采起的技术来讲,能够将搜索引擎技术的发展划分为4个阶段:分类目录文本检索连接分析用户中心网站

史前时代:分类目录的一代搜索引擎

这个时代能够称为“导航时代”,Yahoo和国内hao123是这个时代的表明。经过人工收集整理,把属于各个类别的高质量网站或者网页分门别类罗列,用户能够根据分级目录来查找高质量的网站。这种方式是纯人工、最原始的方式,并未采起什么高深的技术手段。spa

第一代:文本检索的一代blog

文本检索的一代采用经典的信息检索模型,好比布尔模型、向量空间模型或者几率模型,来计算用户查询关键词和网页文本内容的相关程度。网页之间有丰富的连接关系,而这一代搜索引擎并未使用这些信息。早期的不少搜索引擎好比AltaVista、Excite等大都采起这种模式。

第二代:连接分析的一代

这一代的搜索引擎充分利用了网页之间的连接关系,并深刻挖掘和利用了网页连接所表明的含义。一般而言,网页连接表明了一种推荐关系,因此经过连接分析能够在海量内容中找出重要的网页。这种重要性本质上是对网页流行程度的一种衡量,由于被推荐次数多的网页其实表明了其具备流行性。搜索引擎经过结合网页流行性和内容类似性来改善搜索质量。

咱们都知道Google率先提出并使用PageRank连接分析技术,并大获成功,这同时引发了学术界和其余商业搜索引擎的关注。后来学术界陆续提出了不少改进的连接分析算法。目前几乎全部的商业搜索引擎都采用了连接分析技术。

采用连接分析可以有效改善搜索结果质量,可是这种搜索引擎并未考虑用户的个性化要求,因此只要输入的查询请求相同,全部用户都会得到相同的搜索结果。另外,不少网站拥有者为了得到更高的搜索排名,针对连接分析算法提出了很多连接做弊方案,这样致使了搜索结果质量变差。

第三代:用户中心的一代

目前的搜索引擎大均可以纳入第三代,即以理解用户需求为核心。不一样用户即便输入同一个查询关键词,但其目的也有可能不同。好比一样输入“苹果”做为查询词,一个追捧IPhone的时尚青年和一个果农的目的会有至关大的差距。而目前搜索引擎大部分致力于解决以下问题:如何可以理解用户发出的某个很短小的查询词背后包含的真正需求,因此这一代搜索引擎称之为以用户为中心的一代。

搜索引擎的技术架构

做为互联网应用中最具技术含量的应用之一,优秀的搜索引擎须要复杂的架构和算法,以此来支撑对海量数据的获取、存储、以及对用户查询的快速而准确的相应。

咱们来看看这个搜索引擎的基础架构:

搜索引擎的信息源自于互联网的网页,经过网络爬虫将整个互联网的信息获取到本地,由于互联网页面中有至关大比例的内容是彻底相同或者近似重复的,“网页去重”模块会对此作出检测,并去除重复内容。

在此以后,搜索引擎会对网页进行解析,抽取出网页主题内容,以及页面中包含的指向其余页面的连接。为了加快响应用户查询的速度,网页内容经过“倒排索引”这种高效查询数据结构来保存,而网页之间的连接关系也会予以保存。之因此要保存连接关系,是由于这种关系在网页相关性排序阶段是可利用的,经过“连接分析”能够判断页面的相对重要性,对于为用户提供准确的搜索结果帮助很大。

当搜索引擎接收到用户的查询词后,首先须要对查询词进行分析,但愿可以结合查询词和用户信息来正确推到用户的真正搜索意图。在此以后,首先在缓存中查找,搜索引擎的缓存系统存储了不一样的查询意图对应的搜索结果,若是可以在缓存系统找到知足用户需求的信息,则能够直接将搜索结果返回给用户,这样既省掉了重复计算对资源的消耗,又加快了响应速度;若是保存在缓存的信息没法知足用户需求,搜索引擎须要调用“网页排序”模块功能,根据用户的查询实时计算哪些网页是知足用户信息需求的,并排序输出做为搜索结果。而网页排序最重要的两个参考因素中,一个是内容类似性因素,即哪些网页是和用户查询密切相关的;另一个是网页重要性因素,即哪些网页是质量较好或相对重要的,这点每每能够从连接分析的结果得到。结合以上两个考虑因素,就能够对网页进行排序,做为用户查询的搜索结果。

后话

现在,除了上述的子功能模块,搜索引擎的“反做弊”模块成为日益重要的功能。搜索引擎做为互联网用户的上网入口,对于网络流量的引导与分流相当重要,甚至能够提及了决定性做用。

所以,做为IT人员或者即将进入IT行业的童鞋们,咱们都应该对搜索引擎有一些基本的认识。

相关文章
相关标签/搜索