通用搜索引擎背后的技术点

释放双眼,带上耳机,听听看~!
通用搜索引擎背后的技术点(给算法爱好者加星标,修炼编程内功)作者:后端技术指南针 (本文来自作者投稿)今天准备和盆友们一起学习下关于通用搜索引擎的一些技术点。鉴于搜索引擎内容非常多,每一部分都够写好几篇文章的所以本文只是抛砖引玉,深入挖掘还得老铁们亲力亲为。通过本文你将对通用搜索引擎的基本原理和组成有一个较为清晰的认识,用心读完,肯定有所收获!废话不说,各位抓紧上车,冲鸭!

目录

    通用搜索引擎背后的技术点

    (给算法爱好者加星标,培养编程内功)

    作者:后端技术指南针 (本文由作者提交)

    今天准备和盆友一起学习一些关于通用搜索引擎的技术点。

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

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

    胡说八道,大家赶紧上车,冲鸭!

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

    通用搜索引擎

    谷歌、百度、搜狗、神马等歌、百度、搜狗、神马等。

    %title插图%num垂直搜索引擎

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

    %title插图%num虽然两种搜索引擎的数据规模和特征不同,但都是为了填补用户和大量信息之间的差距。

    %title插图%num

    搜索和推荐经常被比较,但两者之间存在一些差异和联系。

    在宏观上,搜索和推荐都是为了解决用户和信息之间的隔离问题,给用户有用的/需要的/喜欢的信息。区别点搜索通常由用户主动触发,并根据自己的意图进行搜索。建议系统主动推送,让用户看到可能感兴趣的信息。%title插图%num

    我们每天都处理搜索引擎,评估搜索引擎的质量可以简单地概括为:准确性、及时性、响应速度、权威等。换句话说,搜索引擎知道用户真正想要找到什么,可以快速准确地显示,并及时包含一些热门紧急信息,以赢得用户。这一目标需要多个搜索引擎模块的协作,这是一个复杂的系统工程,并不容易。

    大白尝试用朴实的语言来整体表达下,通用搜索引擎大致是怎么工作的:1. 网络蜘蛛爬虫每天都遗余力地收录网页,然后存储,这样每个网站的页面都有一个镜像,这个规模是100亿/1000亿。%title插图%num2. 简单的镜像不能直接使用,需要处理,逐个分割网页,建立搜索词和网页之间的相应关系,以便用户在搜索某件事时获得大量相关网页。%title插图%num3. 比如”搜索秘密角落”可能会找到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在工程实践中,有必要根据自己的情况和搜索引擎的特点来选择某种策略或多种策略组合。

    在工程实践中,有必要根据自己的情况和搜索引擎的特点选择某种策略或多种策略组合。网络爬虫需要遵循Robots协议(网络爬虫排除标准)是网络爬虫和网站之间的君子协议。网站通过协议告诉网络爬虫哪些可以抓,哪些不能抓。网络爬虫还需要考虑抓取频率,以防止网站造成过度负担,简而言之,搜索引擎网络爬虫需要是一个谦虚的绅士。

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

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

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

    %title插图%num将清理后的内容分词提取关键词。例如,一个网页的内容有1000个单词,分词后大约有50个单词,相当于提取网页的主干,并对标题、摘要、文本等不同部分的内容进行不同的权重处理。在分词过程中,会消除停用词、虚词等。”的、得、地”等,从而极力还原网页的主干内容。我们使用在线网页分词工具和真实网页来模拟这个过程:网页分词在线工具:http://www.78901.net/fenci/抓取网页:https://tech.huanqiu.com/article/3zMq4KbdTAA%title插图%num分词后可以标注词频,这些都是后续网页排名的重要来源,但是中文很复杂,所以分词算法有很多种,包括基于字符串匹配的分词算法、基于概率统计的分词算法、基于语义规则的分词算法等。

    %title插图%num假设我们将每个网页的唯一编号docid,通过前面的分词,一个网页将被分成多个不同权重的实体词。所谓正排是基础docid所有属于这个网页的内容都可以获得,这是一个符合我们思维的积极过程,相对而言会有倒排索引。以《秘密角落》剧情简介页面为例,模拟分词情况,大致如下(本分词结果纯脑补,以实际为准):%title插图%num如果我们对1万个网页进行分词,包括一些公共搜索词:微山湖、智取威虎山、30岁、秘密角落等,我们将在总结后建立搜索词->网页的映射关系。%title插图%num所以对于检索词”隐秘的角落”有许多网页,倒排索引相当于从一个词中提取多少文章的过程。%title插图%num所以对于检索词”隐秘的角落”有许多网页,倒排索引相当于从一个词中提取多少文章的过程。

    当我们提到食物时,我们会想到火锅、烧烤、烤鸭、烹饪等,这是一个从点到面的过程,在搜索引擎中非常重要。

    内容处理模块将提前清的网页,网页URL对爬虫模块、内容分词、建立正排索引和倒排索引,是承上启下的中间环节。特别是,提到正排索引和倒排索引,字面上并不直观,事实上,真相并不难理解:正排索引:具体的网页有多少关键字,特别是指网页本身的内容集,是一个网页。倒排索引:一个搜索关键字对应多少相关网页,即可选网页集合,是一种网页。%title插图%num

    由于存储的网页是1000亿级的,一个检索词可能是数万、数十万甚至更多的相关网页。网页排名需要综合考虑:相关性、权威性、及时性、丰富性等。搜索引擎应该向用户展示高质量的强相关网页,并将其放在前面,否则搜索效果会很差,用户不会购买。事实上,也是如此。例如,搜索引擎返回10页结果,每页10页,总结100页。一般用户点击1-3页后不再点击网页,因此排名的头部内容对搜索结果非常重要。我们还在检索”隐秘的角落”例如,百度总共返回了10页,其中1-2页的内容相关性强,检索结果较好:

    %title插图%num

    %title插图%num网页排名策略是一个不断优化和改进的演变过程。让我们来看看排名策略:基于词频和位置权重的排名是早期搜索引擎经常采用的方法,相对简单,但效果很好。简单地说,它是基于网页中关键词的频率和位置,因为一般认为搜索词越多,位置越重要,网页的相关性越好,排名越高。词频不是简单的统计次数,需要有全局的概念来判断关键词的相对次数,这就是我们想说的TF-IDF逆文档频率,来看看百度百科的解释:TF-IDF (term frequency–inverse document frequency)它是一种常用的信息检索和数据挖掘加权技术。TF是词频(Term Frequency),IDF是反文本频率指数(Inverse Document Frequency)。TF-IDF对于一个文件集或一个语料库中的一个文件的重要性,是一种统计方法。随着文件中出现的次数成正比增加,单词的重要性也会随着语料库中出现的频率成反比下降。栗子:网页”吃饭”这个词出现了10次,虽然有很多次,但是”吃饭”这个词太普通了,因为它出现在许多其他网页上,所以”吃饭”这个检索词的重要性相对降低。基于链接分析的排序链接分析排序认为,网页被其他网页引用的次数越多,网页质量越高。%title插图%num基于链接分析的排序算法有很多种,其中最著名的PageRank谷歌广泛采用算法,是其核心排序算法。来看下PageRank算法的基本思想:网页的重要性PageRank值得衡量,网页PageRank值体现在两个方面:引用页面的其他页面数量和引用页面的其他页面的重要性。假设一个网页A被另一个网页B引用,网页B将被引用PageRank值分配给网页B引用的网页,所以引用的网页A越多,就越多PageRank值越高。此外,网页B越重要,它引用的页面可以分配PageRank值就越多,网页A的PageRank值越高越重要。其实这个算法很简单:比如写微信官方账号,大V转载相当于引用。其他微信官方账号转载越多,微信官方账号内容质量越高。%title插图%numPageRank算法也有一些问题,比如对新页面不友好,新页面暂时没有引用,所以PageRank值很低,而且PageRank算法强调网页之间的引用关系,可能不够重视网页本身的主题内容,即所谓的主题漂流问题。与PageRank其他算法类似于弥补主题关联问题的算法,包括:HillTop算法、Topic-Sensitive PageRank算法、HITS算法等,本文将不再展开。搜索引擎也有28个原则,主页占据了大量的点击流量,这也意味着巨大的商业价值。这里提到SEO,先看百度百科SEO定义:搜索引擎优化也被称为SEO,即Search Engine Optimization,它是一种通过分析搜索引擎的排名规则,了解如何搜索各种搜索引擎,如何捕获互联网页面,如何确定搜索结果的排名。搜索引擎采用易于搜索引用的手段,优化网站,提高网站在搜索引擎中的自然排名,吸引更多用户访问网站,提高网站访问量,提高网站的销售能力和宣传能力,提高网站的品牌效应。道高一尺魔高一丈,只有魔法可以打败魔法。

    网页反作弊是搜索引擎需要解决的一个重要问题,包括内容反作弊、链接分析反作弊等。

    网页内容作弊,如在网页内容中添加大量重复热词,在标题/摘要等重要位置添加热词,html标签作弊等,如在主题无关的网页上添加大量”隐秘的角落”热
    %title插图%num

    %title插图%num

    %title插图%num

    给TA打赏
    共{{data.count}}人
    人已打赏
    原创作品

    精品APP:新电影天堂(手机和盒子通用版)

    2022-9-16 21:33:58

    原创作品

    长文干货:当我们聊天的时候SEO我们到底在说什么?独立站推广营销和集客营销实践大略。

    2022-9-16 21:48:05

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