您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

搜索引擎中的算法与数据结构你知多少?

时间:2019-09-29 12:17:16  来源:  作者:

我们常说阿里的运营,腾讯的产品,百度的技术。这背后是对百度技术的肯定,我们都知道,百度是靠搜索引擎起家,搜索引擎与电商与社交产品有明显的区别,有着非常强的技术驱动性。今天我们就来学习学习,搜索引擎大致是怎么组成的,背后的算法与数据结构是怎么样的,作为一个程序员,我们能否实现自己简单的搜索引擎呢?

一个经典的搜索引擎,无论是谷歌、百度、微信的搜一搜还是淘宝的搜索,都离不开下面这这个基本过程,收集、分析、索引、查询。我们今天一个一个来介绍这背后的经典算法与数据结构。

 

 

 

收集

首先是收集,最常见的便是爬虫,从各个网站中爬取对应的资料,根据网站的爬取顺序,我们常常有深度优先搜索,广度优先搜索等不同的爬取策略,为了避免爬取重复的网站,我们可能需要对网站的地址进行判重,常用的,我们可以使用布隆过滤器,可以做到非常高效的网站去重。当然,现在有一些搜索引擎也是不需要爬虫的,像淘宝的商品搜索,商家每发布新的产品,或者用户发表新的评论,都会发布异步的消息队列,由搜索引擎订阅并收集。那么多的基础元数据,我们通常需要给他们一个编号,有人说可以用MySQL存储,用自增主键id,那样一个表会非常大,要知道,网络上的网页何止千千万万,我们通常采用NoSql进行存储,同时我们也需要ID生成分配器,给每一个资源一个独立的ID。

分析

程序员们都知道,在网页上我们虽然能看到丰富多彩的文案与图片,背后都是html格式的代码,我们需要去掉这些格式,才能获取到真实的文本。那么,如何在一个HTML文件中,去掉各种标签呢?最简单的,便是文本匹配,为了加快匹配的速度,通常我们会常用AC自动机等多模文本匹配算法进行优化,可以快速的去掉HTML页面上的各种标签。

索引

那么多的网页,我们查询的时候,不可能每一个网页都去遍历,找到是否包含这个关键字。通常,我们采用的一个技术,便是倒排索引,什么是倒排索引的,最简单来说,就是记录每一个单词,在哪里出现过。举个简单例子,文章1的内容包含了“我和我的祖国,一刻都不能分割”,文章2的内容包含了“祝伟大祖国70周年生日快乐,繁荣富强”,文章3包含了“国庆节要放假了,程序员可以休息了”。那么,单词“祖国”的倒排索引上面就会有1,2表示,在第1,2号文章上出现过,单词“程序员”的倒排索引是3,表示在第3号文件出现过。

算法与数据结构之美,搜索引擎中的算法与数据结构你知多少?

 

查询

当我们用关键字进行查询的时候,我们首先去索引上面查询这个单词在哪些文章上面出现过。紧接着,便是排序,排序是搜索引擎一个非常牛逼的技术,那么多的文章,一个关键字可能包含了几百万的文章,怎么进行排序的呢?有几种非常简单的方法,例如关键词出现的次数,越多说明权重越高,或者是创建的时间,越新权重越高,当然也有一些其他的排序方法,例如竞价等等。

现代的搜索引擎,一般还会用AI进行武装,我们一般用深度学习,对搜索结果去建立神经网络,如果用户点击了,就说明搜索出来的结果用户更喜欢,从而达到不断训练,越来越聪明的作用。

算法与数据结构之美,搜索引擎中的算法与数据结构你知多少?

 

总结

好了,今天我们就分享到这里,有兴趣的程序员同学,可以尝试自己实现一个简单的搜索引擎。相信你会对其中的算法与数据结构有更深一步的认识。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)



Tags:搜索引擎   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天不讲信息流,讲点其他的,比如搜索搜索是什么东西?见过开店卖东西吧,原理大同小异。比如我在步行街租个店铺,开个鞋店,每天在店里等着来步行街的人进我店里买我的鞋。百度搜索就...【详细内容】
2021-12-24  Tags: 搜索引擎  点击:(9)  评论:(0)  加入收藏
一、背景介绍在网上冲浪少不了用到搜索引擎,而很多朋友都习惯把Google视为第一个选择对象。当然Google无论在搜索速度还是结果关联性方面都是十分优秀的。但百度(http://www.b...【详细内容】
2021-11-05  Tags: 搜索引擎  点击:(31)  评论:(0)  加入收藏
在SEO优化的职业里,运用搜索引擎对网页内容的检索原理,对网站内部外部资源进行优化整合,然后到达抱负的作用,便利客户快速找到想要的信息。在分类上也可分白帽SEO和黑帽SEO。一...【详细内容】
2021-10-22  Tags: 搜索引擎  点击:(36)  评论:(0)  加入收藏
网络推广计划表示在网站优化时,内容优化也是重中之重,其中有关文章的优化也让站长们苦恼不已,因为不太清楚蜘蛛对网站文章的质量评判是如何的,很难做到更精准的蜘蛛“取向”,那么...【详细内容】
2021-10-22  Tags: 搜索引擎  点击:(45)  评论:(0)  加入收藏
搜索引擎是公众获取信息的重要渠道,也是众多企业进行宣传营销的重要阵地。而随着“有偿删帖”入刑,通过各种“非删除”方式进行网络负面舆论压制也成为相关行业的主流操作。...【详细内容】
2021-09-07  Tags: 搜索引擎  点击:(62)  评论:(0)  加入收藏
作为一名专业的SEO从业者,对于任何SEO项目的推进,都是建立在搜索策略基础之上,因此,定期关注搜索动态是一个必修课,只有这样我们才能更好的制定优化策略。比如:百度本次升级蓝天算...【详细内容】
2021-07-28  Tags: 搜索引擎  点击:(72)  评论:(0)  加入收藏
搜索引擎已经成为上网必不可少的工具之一,聪明的黑客们发现,搜索引擎也能成为发动网络攻击的工具。 Google Hacking,原指利用Google搜索引擎搜索信息来进行入侵的技术和行为,如...【详细内容】
2021-06-16  Tags: 搜索引擎  点击:(136)  评论:(0)  加入收藏
搜索引擎快照是一个非常方便且实用的工具,它能够在搜索结果不可用的时候(无法访问、被删除),快速查看到内容,不受网站宕机影响。但在目前的移动搜索引擎页面,想要查看快照非常困难...【详细内容】
2021-04-26  Tags: 搜索引擎  点击:(282)  评论:(0)  加入收藏
在学习搜索营销之前,我们应该弄清楚搜索引擎是什么。1.什么是搜索引擎?所谓搜索引擎,就是通过电脑程序爬行,追踪网页之间的链接。信息经过组织、加工后,向用户提供检索服务,并将...【详细内容】
2021-04-20  Tags: 搜索引擎  点击:(174)  评论:(0)  加入收藏
不知不觉从事外贸行业已经5年多了,这些年一直靠着公司分配的询盘过活。但公司网站本来没什么询盘,能分到我的就更少了,所以业绩你们可想而知。 去年开始,公司为了拓展业务,给我们新增了主动开发客户渠道,希望每个业务员都...【详细内容】
2021-04-16  Tags: 搜索引擎  点击:(140)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(11)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(22)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(14)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(40)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条