搜索引擎之技术架构

作者: 产品美景 | 来源:发表于2018-08-19 10:35 被阅读5次

    本文约 2200 字,建议阅读时间 4 分钟,理解为主。

    在开始讲述搜索引擎技术架构之前,大致阐述下搜索引擎的基本知识,有助于理解技术问题。

    1 搜索引擎之基础知识

    1.1 概念

    搜索引擎,是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。

    从以上解释中,都很容易提取出三个方面:

    搜索引擎是什么?                   — 是一个软件系统。

    搜索引擎从哪里搜索信息?     — 从互联网上。

    搜索引擎从互联网上干什么? — 搜集信息。

    搜索信息干什么?                   — 为用户提供服务。

    简而言之,搜索引擎就是从互联网上搜集信息,并为用户提供服务的软件系统。

    1.2 种类

    搜索引擎也是分为很多种类的,从搜索信息的不同对象来说,可以分为:

    1)全文搜索引擎,Full Text Search Engine

    顾名思义,即对网页的文字、图片、视频、链接等全部内容进行搜索,如百度、Google。

    百度


    谷歌

    2)垂直搜索引擎,Vertical Search Engine

    即对网页的特定垂直领进行搜集和处理,如国内的携程只针对于机票、旅行信息进行搜集和处理,如国外的Pinterest 主要针对于图片进行搜集和处理。

    携程 Pinterest

    3)元搜索引擎,Meta Search Engine

    “元”可以理解为数据的数据,比如这篇文章的字数多少啊,大小多少啊等等信息。

    抽象来说,元搜索引擎就是搜集和处理搜索引擎的搜索引擎。

    具体来说,元搜索引擎就是整合了很多种搜索引擎的数据,同时提供给用户。

    如 meta crawler 等(国内访问不了)。

    Meta Crawler

    2 搜索引擎之技术架构

    作为互联网最具技术含量应用之一的搜索引擎每天都在为几十亿的用户服务。用户除了知道在百度搜索框里输入一个“苹果”,点击百度返回的页面外,可能对搜索引擎就知之甚少了。但在用户没有看到结果之前,搜索引擎依靠着复杂的架构和算法,搜集并处理了海量的数据,同时还为用户提供尽可能准确的搜索信息。

    接下来,我们重点看下非常宏观层面的搜索引擎架构。

    搜索引擎是有许多技术模块组成的,负责在不同阶段对不同数据进行技术处理,互相构成了一个完成的技术架构,基本上这个架构图就可以涵盖搜索引擎的大致工作了。

    搜索引擎之技术架构

    为方便理解,我将这些技术模块分为两个阶段:

    第一阶段是左侧的两列,发生在用户输入查询词前,也就是搜索引擎自己在默默做的事情;

    第二阶段是右侧的两侧,发生在用户输入查询词和返回搜索结果的几毫秒内。

    1)第一阶段,搜索引擎一直在默默做的事情。

    首先,搜索引擎使用爬虫将互联网上的网页获取并下载到本地,可以理解为将各个网页以word文档的形式下载到了本地电脑里。

    此步骤类似于,超市的采购员采购回来许多许多商品。

    其次,有相关程序对下载的数据进行去重处理。因为下载了许多许多文档,存在很多文档完全一致的情况,因此需要对这些文档进行去重操作,保证每个文档都包含第一无二的内容。

    此步骤类似于,超市的理货员对每个商品贴上独一无二的价格标签。

    再次,有相关程序对这些去重后的文档进行解析操作,即抽取出文档的内容和链接。根据某些复杂的算法,对文字进行一定的操作,构成一个倒排索引表。同时,也根据某些复杂的算法,对链接进行一定的操作,构成了一个链接关系。

    此步骤类似于,超市的理货员记住商品价格标签上的主要内容,如这个商品是食品还是衣物等。

    最后,对已经进行过的所有操作,重点是构成好的倒排索引表及链接关系,进行反作弊的处理,比如剔除违法犯罪内容、删除坏网页等,类似超市货品上架之前的检查一样。

    此步骤类似于,超市的理货员记住商品之间的推荐关系,比如苹果是和梨放一起还是和口红放一起等。

    到此为止,第一阶段就结束了,当然真实的搜索和处理过程比这复杂得多,接下来,就进入第二阶段,用户在搜索框输入查询词到搜索结果展示之前的几毫秒的阶段了。

    2)第二阶段,用户输入查询词之后发生的事情。

    首先,用户在搜索框输入了“苹果”。

    此步骤类似于,用户进入超市跟售货员说要买“苹果”一样(前提,用户不需要进入超市自己找要买的东西)。

    其次,搜索引擎在Cache系统(即缓存系统)赶紧查一下有没有苹果。缓存系统可以理解为用户搜得很多,放在一个单独容易取到的地方。

    此步骤类似于,超市售货员在离得最近的“最畅销货架”上找一下有没有“苹果”。如果有“苹果”,就直接给用户。如果没有,就赶紧跑进超市内部去找,则进入下一步骤。

    再次,搜索引擎没有再缓存系统中找到用户要查的词语,就会根据查询词在第一阶段中处理出来的内容和链接进行分析,找到可能是用户想要的信息。

    此步骤类似于,超市售货员迅速地翻各个商品的价格标签,找到跟“苹果”相关的所有商品。

    最后,搜索引擎在几毫秒内找到的数以亿记的且都可能相关的网页,根据一定的相关性算法,把最可能是用户想要的页面展示在最前面,之后按照相关性进行排序,依次展示。

    此步骤类似于,超市售货员拿着几亿的标签,最该给用户的是能吃的“苹果”呢?是“苹果”手机呢?还是“苹果”形状的抱枕呢?当然售货员会根据已有经验给用户推荐出相关性最大的商品。

    以上,展示了搜索引擎的大致技术架构,辅以超市的例子,希望大家能够理解搜索引擎在用户“看不见”的背后都做了什么,我们用户也就能理解互联网技术的伟大之处了,互联网人也对搜索巨头Google 报以崇拜之情了。

    另外,产品经理也不要吐槽工程师做不出百度这种搜索功能了,他要能做出来,他就不会在这个公司了。

    之后,我会陆续给大家更新搜索引擎系列文章,展开讲述在不同阶段不同步骤,搜索引擎做了什么,为什么做,怎么做的。

    公众号:产品美景,这里有最新最全的产品知识和个人提升方案,欢迎随时交流想法 ~

    相关文章

      网友评论

        本文标题:搜索引擎之技术架构

        本文链接:https://www.haomeiwen.com/subject/cakdbftx.html