画了30张图:死敲搜索引擎背后的故事

释放双眼,带上耳机,听听看~!
画了30张图:死磕搜索引擎背后的故事今天准备和小伙伴们一起学习下关于通用搜索引擎的一些技术点。鉴于搜索引擎内容非常多,每一部分都够写好几篇文章的所以本文只是抛砖引玉,深入挖掘还得老铁们亲力亲为。通过本文你将对通用搜索引擎的基本原理和组成有一个较为清晰的认识,用心读完,肯定有所收获!废话不说,各位抓紧上车,冲鸭!搜索引擎根据其使用场景和规模,可以简单分为两大类:通用搜索引

目录

    画了30张图:死敲搜索引擎背后的故事

    %title插图%num

    今天我要和朋友们一起学习一些关于通用搜索引擎的技术点。

    鉴于搜索引擎的内容很多,每一部分都足以写几篇文章,所以这篇文章只是为了吸引玉石,深入挖掘也必须由老铁自己做。

    通过这篇文章,你会对通用搜索引擎的基本原理和组成有一个清晰的认识,仔细阅读,一定会有所收获!

    废话不说,各位抓紧上车,冲鸭!

    %title插图%num

    根据其使用场景和规模,搜索引擎可以简单地分为两类:

    谷歌、百度、搜狗、神马等大搜索,如谷歌、百度、搜狗、神马等。%title插图%num

    垂直搜索引擎垂直搜索,又称垂直搜索,是特定领域的搜索,如使用QQ音乐搜索周杰伦的歌曲等。

    %title插图%num虽然两种搜索引擎的数据规模和特征不同,但都是为了填补用户和大量信息之间的差距。%title插图%num搜索和推荐经常被比较,但两者之间存在一些差异和联系。

    在宏观上,搜索和推荐都是为了解决用户和信息之间的隔离问题,给用户有用的/需要的/喜欢的信息。

    区别点搜索通常由用户主动触发,并根据自己的意图进行搜索。建议系统主动推送,让用户看到可能感兴趣的信息。

    %title插图%num

    我们每天都处理搜索引擎,评估搜索引擎的质量可以简单地概括为:准确性、及时性、响应速度、权威等。

    换句话说,搜索引擎知道用户真正想要找到什么,可以快速准确地显示,并及时包含一些热门紧急信息,以赢得用户。

    这一目标需要多个搜索引擎模块的协作,这是一个复杂的系统工程,并不容易。

    大白试图用简单的语言整体表达,通用搜索引擎是如何工作的:

    1. 网络蜘蛛爬虫每天都遗余力地收录网页,然后存储,这样每个网站的页面都有一个镜像,这个规模是100亿/1000亿。

    %title插图%num

    2. 单纯地镜像也不能直接用,需要加工处理,把一个个网页进行分词,建立搜索词和网页的对应关系,这样用户搜索某个东西时,才会拿到很多相关的网页。

    %title插图%num

    3. 比如”搜索秘密角落”可能会找到100个相关网页,但网页和搜索词之间的相关性必须强弱,所以我们仍然需要对网页进行排序。有很多排序策略,最后向用户展示高质量的网页。

    %title插图%num

    用户看到相关结果后,点击或跳过,搜索引擎根据用户的相关动作进行调整,实现整个闭环过程。

    4. 为了更好地理解用户的真实用途,需要理解检索词的意图、条目划分、同义词替换、语法纠错等,然后根据这些检索词获取数据,为用户找到他们想要的网页。

    例如,检索词是”老鹰”,可能是自然界的老鹰,也可能是自然界的老鹰NBA一支球队:

    %title插图%num

    让我们简单地看看每个模块的基本组成和主要功能:

    %title插图%num网络爬虫模块搜索引擎中的网络爬虫是网页的搬运工,负责下载允许在互联网上被捕获的网页。如果搜索引擎被视为餐厅,在线爬虫模块是餐厅的买家。

    内容处理模块负责内容分析、内容清理、主体提取、索引建立、链接分析、反作弊等链接。

    内容处理模块负责内容分析、内容清理、主体提取、索引建立、链接分析、反作弊等链接。

    内容存储模块存储模块是搜索引擎的坚强后盾,将抓取的原始网页、处理后的中间结果等等进行存储,这个存储规模也是非常大的,可能需要几万台机器。

    用户分析模块用户模块负责接收用户的查询词、分词、同义词转换、语义理解等,找出用户的真实意图和查询重点,以恢复正确的结果。

    搜索引擎的核心部分是内容排序模块结合用户模块分析的查询词和内容索引生成用户查询结果并对页面进行排序。

    接下来,我们将简要介绍几个模块的基本内容和技术点。

    网络爬虫模块是通用搜索引擎的一个非常基本的组件,通常使用分布式爬虫来实现。让我们来看看搬运工是如何实现大量的网页挖掘的:%title插图%num

    网络爬虫的基本流程:

    高质量的热门网站URL作为种子,放在要抓的地方URL在队列中读取抓取URL获取地址下载分析下载的网页内容,存储网页hbase/hdfs等等,提取网页中的其他存在URL发掘到新的URL去重,如果不抓取,放入抓取队列,直到待抓取URL队列为空,抓取过程中完成本轮抓取会有多种遍历策略:深度优先遍历DFS、广度优先遍历BFS、部分PageRank策略、OPIC网页重要性计算策略、大站优先策略等。%title插图%num

    在工程实践中,有必要根据自己的情况和搜索引擎的特点来选择某种策略或多种策略组合。

    在工程实践中,有必要根据自己的情况和搜索引擎的特点来选择某种策略或多种策略组合。

    %title插图%num需要遵循网络爬虫Robots协议(网络爬虫排除标准)是网络爬虫和网站之间的君子协议。网站通过协议告诉网络爬虫哪些可以抓,哪些不能抓。

    网络爬虫还需要考虑抓取频率,以防止网站造成过度负担,简而言之,搜索引擎网络爬虫需要是一个谦虚的绅士。

    爬虫模块存储网页内容后,网页内存处理模块开始分析网页内容,主要包括:数据清理、网页内容分词、建立正排索引、建立倒排索引等。%title插图%num

    一般来说,除了具体内容,网页上还会有很多无关紧要的东西,比如html在实际的搜索引擎中,标签、推广等都是无用的。

    内容处理模块将清理无用的数据和标签,为后续的分词做准备。

    将清理后的内容分词提取关键词。例如,一个网页的内容有1000个单词,分词后大约有50个单词,相当于提取网页的主干,并对标题、摘要、文本等不同部分的内容进行不同的权重处理。

    %title插图%num在分词过程中,会消除停用词、虚词等。”的、得、地”等等,从而极力还原网页的主要内容。

    我们使用在线网页分词工具和真实网页来模拟这个过程:

    网页分词在线工具:http://www.78901.net/fenci/抓取网页:https://tech.huanqiu.com/article/3zMq4KbdTAA%title插图%num

    分词后可以标注词频,这些都是后续网页排名的重要来源,但中文很复杂,所以分词算法有很多种,包括:

    基于概率统计的分词算法,基于字符串匹配的分词算法,基于语义规则的分词算法

    %title插图%num假设我们将每个网页的唯一编号docid,通过前面的分词,一个网页将被分成多个不同权重的实体词。

    所谓正排是基础docid所有属于这个网页的内容都可以获得,这是一个符合我们思维的积极过程,相对而言会有倒排索引。

    以《秘密角落》剧情简介页面为例,模拟分词情况,大致如下(本分词结果纯脑补,以实际为准):%title插图%num

    假设我们对1万个网页进行了分词,包括一些公共检索词:微山湖、智取威虎山、三十而立、隐秘角落等,因此,我们将在总结后建立检索词->网页的映射关系。%title插图%num

    所以对于检索词”隐秘的角落”有许多网页,倒排索引相当于从一个词中提取多少文章的过程。%title插图%num

    就如同我们提到美食就想到:火锅、烧烤、烤鸭、炒菜等等,是一个从点到面的过程,这种逆向过程在搜索引擎中非常重要。

    内容处理模块将提前清的网页,网页URL对爬虫模块、内容分词、建立正排索引和倒排索引,是承上启下的中间环节。

    特别是提到正排索引和倒排索引,字面上并不直观,其实真相并不难理解:

    正排索引:具体到一个网页有多少关键词,特别是网页本身的内容集,是一个网页。

    倒排索引:一个检索关键词对应多少相关联的网页,也就是可备选网页集合,是一类网页。

    倒排索引:一个搜索关键字对应多少相关网页,即可选网页集合,是一种网页。

    由于存储的网页是1000亿级的,一个检索词可能是数万、数十万甚至更多的相关网页。

    %title插图%num网页排名需要综合考虑:相关性、权威性、及时性、丰富性等。

    搜索引擎应该向用户展示高质量的强相关网页,并将其放在前面,否则搜索效果会很差,用户不会购买。

    事实上,也是如此。例如,搜索引擎返回10页结果,每页10页,总结100页。一般用户点击1-3页后不再点击网页,因此排名的头部内容对搜索结果非常重要。

    我们还在检索”隐秘的角落”例如,百度总共返回了10页,其中1-2页的内容相关性强,检索结果较好:

    网页排名策略是一个不断优化和改进的演进过程,让我们来看看排序策略:

    早期搜索引擎经常采用基于词频和位置权重的排序方法,相对简单但效果好。

    简单地说,它是基于网页中关键词的频率和位置,因为一般认为搜索词越多,位置越重要,网页的相关性越好,排名越高。

    词频不是简单的统计次数,需要有全局的概念来判断关键词的相对次数,这就是我们想说的TF-IDF逆文档频率,让我们来看看百度百科全书的解释:

    TF-IDF (term frequency–inverse document frequency)它是一种常用的信息检索和数据挖掘加权技术。

    TF是词频(Term Frequency),IDF是反文本频率指数(Inverse Document Frequency)。

    TF是词频(Term Frequency),IDF是反文本频率指数(Inverse Document Frequency)。

    %title插图%numTF-IDF对于一个文件集或一个语料库中的一个文件的重要性,是一种统计方法。

    随着文件中出现的次数成正比增加,单词的重要性也会随着语料库中出现的频率成反比下降。

    举个栗子:

    网页中”吃饭”这个词出现了10次,虽然有很多次,但是”吃饭”这个词太普通了,因为它出现在许多其他网页上,所以”吃饭”这个检索词的重要性相对降低。

    基于链接分析的排序链接分析排序认为,网页被其他网页引用的次数越多,网页质量越高。

    基于链接分析的排序算法有很多种,其中最有名的PageRank谷歌广泛采用算法,是其核心排序算法。

    来看下PageRank算法的基本思想:

    %title插图%num

    %title插图%num

    %title插图%num

    给TA打赏
    共{{data.count}}人
    人已打赏
    营销

    电影天堂|爱乐之城

    2022-9-16 21:02:13

    营销

    白杨SEO:小红书SEO也许是伪命题

    2022-9-16 21:17:12

    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索