架构设计---搜索引擎的原理

news2024/9/29 3:28:40

前言:

搜索引擎的倒排索引,数据的搜索与查找技术是计算机软件的核心算法,这方面已有非常多的技术和实践经验。而对于搜索引擎来说,要面对海量的文档进行快速的内容检索、查询的话,最主要的技术是倒排索引技术。

像百度这样的互联网搜索引擎来说,首先需要通过网络爬虫进行全球公开的网页进行拉取的处理。

事实上,互联网一方面是将全世界的人和网络应用联系起来,另一方面也将全世界的网络通过超链接进行联系起来处理,几乎每个网页都包含了一些其他网页的超链接,这些超链接互相连接,就让全世界的互联网构成一个大的网络。搜索引擎只是需要解析这些网页即可,得到里面的超链接,然后继续下载这些超链接的网页,继续解析,这样就可以得到所有的网页了。

过程:首先选择一些种子URL,然后通过爬虫将URL的网页爬下来。爬虫:发送URL请求,下载相关的HTML页面,然后将这些Web页面存储自己的服务器上面,并解析这些页面的HTML页面,当解析到网页里超链接URL的时候,再检查这个超链接是否已经在前面已经处理过了,如果没有处理的话,就把这个超链接放到一个队列里面取,后面的请求URL的时候,得到对应HTML页面并且解析包含的超链接,如此不断重复,就可以将全世界的Web页面存储到自己的服务器里面。

得到了网页以后,需要对每个网页进行编号,得到全部编号以后,然后再解析每个网页,提取文档里面的每个单词,英文的话,可以使用空格分隔处理,比较容易;如果是中文的话,比如说后端技术“后端技术”这四个字来说,得到就是后端、技术两个词。

把这个单词、文档矩阵按照单词、文档列表的方式组织起来,就是倒排索引:

这个例子中只有两个单词、7个文档,搜索单词的时候,可以将所有的单词构成一个Hash表,根据搜索词直接查找Hash表,就可以找到对应的单词了,如果搜索词是“后端”,快速得到文档列表,有4个;如果搜索词是“后端技术”,那么首先需要对搜索词进行分词,得到“后端”、“技术”两个搜索单词,分别得到这两个单词的文档列表,然后将这两个文档列表进行交集,可以得到两个结果。

虽然搜索引擎利用倒排索引可以很快得到搜索结果了,但是实践中,搜索引擎应用还会使用缓存对搜索进行加速,将整个搜索词对应的搜索结果直接放入缓存,减少倒排索引的访问压力,以及不必要的集合计算。

搜索引擎结果排序:

google使用了一种叫PageRank的算法进行排序的处理,计算每个网页的权重,搜索结果就按照权重进行排序的处理,权重高的网页在最终结果显示的时候排在前面。

PageRank算法认为,如果一个网页里面包含了某个网页的超链接,那么就表示该网页认可某个网页,或者时候,该网页给某个网页投了一票,如下ABCD四个网页,箭头指向的就是表示超链接的方向,B的箭头指向A,表示B网页包含A网页的超链接,也就是B网页给A网页投了一票。

开始的时候,所有的网页都初始化权重值为1,然后根据超链接关系计算新的权重,比如说B页面包含了A和B两个页面的超链接,那么自己的权重1就被分成了两个分别投给了A和D。

经过一轮PageRank之后,每个页面都有了自己的权重,然后基于这个权重再继续一轮计算,直到所有的网页权重稳定下来,就得到最终所有网页的权重,即最终的pageRank的值。

通常一个网页中包含了另一个网页,是对另一个网页的认可,认为这个网页质量高,值得推荐,而被重要网页推荐的页面也应该是重要的,PageRank算法就是对这一设想的实现,PageRank值代表了一个网页受到推荐的程度,越受推荐越重要,就会是用户想要看到的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0.5到4.0,OceanBase单机分布式一体化的技术演进|DTCC 2022

2022 年 12 月 14 日~16 日,由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办的第 13 届中国数据库技术大会(DTCC 2022)在线上隆重召开。大会以“数据智能 价值创新”为主题,上百位技术领袖齐聚云端,进行多维度、…

信道模型:卫星→地面

这里写目录标题比较C. Loo模型:直射阴影,多径不阴影Corazza模型:直射和多径都阴影Lutz模型:好坏2个状态Rayleigh and Rician 信道生成Shadowed-Rician 直射径 散射径[Secure Transmission in Cognitive Satellite Terrestrial Net…

异常流量发现与分析案例

异常现象 NetInside流量分析系统在某教育平台监测过程中,5月14日发现明显的4次流量高峰(其中第1-2次产生时间距离较近),详细出现时间如下图。 由上图分析看到,引起流量高峰的IP地址是58.129.247.149,下图…

数字孪生关键技术及其在电力行业应用场景

近年来,我国高度重视数字经济的发展,产业数字化升级战略正在推进中,引导数字经济与实体经济深度融合,促进经济高质量发展。数字孪生作为一项关键技术和提高效能的重要工具,可以有效发挥其在建模、数据采集、分析预测、…

前端组件库自定义主题切换探索-01-方案借鉴与思路参考

探索原因背景 首先自然是项目有需求,这是必须去做的原因 其次,是我们项目没有直接使用市面上现成的基于element-ui或者ant-design的第三方UI框架,比如avue,而是有着自己的UI组件库 第三,我们的组件库基于ant-design-v…

C++ stack和queque

Stack 一.有关stack介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入、提取或者删除操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并…

u盘格式化后数据能恢复吗?当然可以,5步恢复U盘数据

很多人都知道格式化U盘会清空里面的数据,虽然可以进行备份,但是一般我们都不会轻易格式化自己的U盘。但是遇到一些特殊情况,我们必须格式化U盘。u盘格式化后数据能恢复吗?当然可以。 只要你的原始数据没有被覆盖,没有…

新C++(4):模板

"抱紧你的我,比国王富有" C可复用性高,C引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL -----前言 一、初始模板 我们先来看看 下面的代码段; 如果此时又有需求: 交换一个char 类型的变量 &#x…

数据库,计算机网络、操作系统刷题笔记29

数据库,计算机网络、操作系统刷题笔记29 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle…

联合证券|主力加仓电气设备、有色金属等行业

上证指数、深证成指早盘探底上升,午后震动回落,尾盘有所上升;创业板指早盘探底冲高,午后震动回落;科创50指数早盘高开高走,午后震动回落。到收盘,上证指数报3157.64点,涨0.08%&#…

如何在Windows中轻松扩大C盘?

因为C盘是系统盘,所以没有足够的空间会导致电脑变慢,影响程序或游戏的运行。新电脑C盘可能有足够的可用空间,但随着对电脑的使用,应用程序安装的越来越多。即便很多程序安装到D盘,但某些程序仍然会占用C盘的部分空间。…

Linux信号通信之信号

文章目录什么是信号生活中的信号进程的信号Linux信号种类前台进程和后台进程进程对信号的处理策略Linux产生信号的方式系统调用发送信号kill调用raise调用abortalarm通过终端按键产生信号通过软件条件产生信号信号的自定义处理signalsigactionCoredump函数重入可重入函数和不可…

Spire.Office 8.1.1 for .NET 是 Spire.Office 7.12.5吗

为何 Spire.Office for .net 8.1.1 悄悄而来?不得而知。官网没有更新信息,为何?我们都不清楚,但是都需要迎接它的到来,不管何种原因,接受吧 by Ω578867473 Spire.Office 7.12.5 is released Friday, 30 De…

持续交付-Jenkinsfile 语法

实现 Pipeline 功能的脚本语言叫做 Jenkinsfile,由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建"自由风格"项目一样,每次可能需要拷贝很多设置到新项目,…

openEuler委员会主席江大勇:激发原创力量,逐梦数智未来

12月29日,由欧拉开源社区发起并联合华为、麒麟软件、统信软件、麒麟信安、超聚变、英特尔、中科院软件所、软通动力、润和软件等伙伴,共同举办的openEuler Summit 2022于线上举行。 会上,openEuler委员会主席江大勇发表了《激发原创力量&…

PyQt学习笔记-基本窗体

记述PyQt的基本窗体信息和基本操作。一、主窗体类(QMainWindow)主窗体类是通用的主窗体,包含菜单栏(QMenuBar),工具栏(QToolBars),悬停部件(QDockWidgets&…

国产之光Yakit——POC模拟神器

概要介绍Yakit 是一个高度集成化的 Yak 语言安全能力的安全测试平台,使用 Yakit,可以做到:类 Burpsuite 的 MITM 劫持操作台查看所有劫持到的请求的历史记录以及分析请求的参数全球第一个可视化的 Web 模糊测试工具:Web FuzzerYak…

前端项目-小米商城

首页的展示 首页的功能 1、搜索栏模糊查询 在我在输入框输入关键字的时候,会匹配关键字,如果我的存放的数据里面包含这些关机键字就会显示出来。做到模糊查询的效果。 2、实现搜索功能 在首页的搜索框点击搜索的时候,就会对你输入的关键字进…

VCSA证书过期处理

原创作者:运维工程师 谢晋 前提提要 客户环境为VSAN环境,VCSA版本为6.7,登陆VCSA时发现报错如下图:     经验判断该报错是因为VCSA的证书过期了,登陆VCSA的5480界面https://VCSAIP:5480,发现果然是证…

Java设计模式-建造者模式Builder

介绍 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以 将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方 法可以构造出不同表现(属性)的…