Google搜索为什么不能无限分页?

Gemini 2.0 Flash 震撼发布,深度搜索、推理,无限文生图 Gemini 2.0 Flash 是 Google AI 旗下一款新一代人工智能产品,致力于提升用户在信息检索和生成内容方面的体验。想象一下,它就像你的知识伙伴,从浩瀚的互联网中快速找出你所需要的内容。这个产品的基础是深度学习与自然语言处理,帮助用户在信息的海洋中迅速找到方向。Gemini 2.0 Flash 的发布标志着人工智能工具的又一次革命。它不仅提升了搜索与内容生成的能力,还赋予用户更为流畅和智慧的体验。在这个瞬息万变的世界中,你准备好迎接这个科技带来的新机遇了吗? 阅读详情

Google搜索为什么不能无限分页?

这是一个很有意思却很少有人注意的问题。

当我用Google搜索MySQL这个关键词的时候,Google只提供了13页的搜索结果,我通过修改url的分页参数试图搜索第14页数据,结果出现了以下的错误提示:

​

编辑切换为居中

 

百度搜索同样不提供无限分页,对于MySQL关键词,百度搜索提供了76页的搜索结果。

 

为什么不支持无限分页

强如Google搜索,为什么不支持无限分页?无非有两种可能:

  • 做不到

  • 没必要

「做不到」是不可能的,唯一的理由就是「没必要」。

首先,当第1页的搜索结果没有我们需要的内容的时候,我们通常会立即更换关键词,而不是翻第2页,更不用说翻到10页往后了。这是没必要的第一个理由——用户需求不强烈。

其次,无限分页的功能对于搜索引擎而言是非常消耗性能的。你可能感觉很奇怪,翻到第2页和翻到第1000页不都是搜索嘛,能有什么区别?

实际上,搜索引擎高可用和高伸缩性的设计带来的一个副作用就是无法高效实现无限分页功能,无法高效意味着能实现,但是代价比较大,这是所有搜索引擎都会面临的一个问题,专业上叫做「深度分页」。这也是没必要的第二个理由——实现成本高。

我自然不知道Google的搜索具体是怎么做的,因此接下来我用ES(Elasticsearch)为例来解释一下为什么深度分页对搜索引擎来说是一个头疼的问题。

为什么拿ES举例子

Elasticsearch(下文简称ES)实现的功能和Google以及百度搜索提供的功能是相同的,而且在实现高可用和高伸缩性的方法上也大同小异,深度分页的问题都是由这些大同小异的优化方法导致的。

什么是ES

ES是一个全文搜索引擎。

全文搜索引擎又是个什么鬼?

试想一个场景,你偶然听到了一首旋律特别优美的歌曲,回家之后依然感觉余音绕梁,可是无奈你只记得一句歌词中的几个字:「伞的边缘」。这时候搜索引擎就发挥作用了。

使用搜索引擎你可以获取到带有「伞的边缘」关键词的所有结果,这些结果有一个术语,叫做文档。并且搜索结果是按照文档与关键词的相关性进行排序之后返回的。我们得到了全文搜索引擎的定义:

全文搜索引擎是根据文档内容查找相关文档,并按照相关性顺序返回搜索结果的一种工具

 

网上冲浪太久,我们会渐渐地把计算机的能力误以为是自己本身具备的能力,比如我们可能误以为我们大脑本身就很擅长这种搜索。恰恰相反,全文检索的功能是我们非常不擅长的。

举个例子,如果我对你说:静夜思。你可能脱口而出:床前明月光,疑是地上霜。举头望明月,低头思故乡。但是如果我让你说出带有「月」的古诗,想必你会费上一番功夫。

包括我们平时看的书也是一样,目录本身就是一种符合我们人脑检索特点的一种搜索结构,让我们可以通过文档ID或者文档标题这种总领性的标识来找到某一篇文档,这种结构叫做正排索引。

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

而全文搜索引擎恰好相反,是通过文档中的内容来找寻文档,诗词大会中的飞花令就是人脑版的全文搜索引擎。

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

全文搜索引擎依赖的数据结构就是大名鼎鼎的倒排索引(「倒排」这个词就说明这种数据结构和我们正常的思维方式恰好相反),它是单词和文档之间包含关系的一种具体实现形式。

​

 

打住!不能继续展开了话题了,赶紧一句话介绍完ES吧!

ES是一款使用倒排索引数据结构、能够根据文档内容查找相关文档,并按照相关性顺序返回搜索结果的全文搜索引擎

高可用的秘密——副本(Replication)

高可用是企业级服务必须考虑的一个指标,高可用必然涉及到集群和分布式,好在ES天然支持集群模式,可以非常简单地搭建一个分布式系统。

ES服务高可用要求其中一个节点如果挂掉了,不能影响正常的搜索服务。这就意味着挂掉的节点上存储的数据,必须在其他节点上留有完整的备份。这就是副本的概念。

 

如上图所示,Node1作为主节点,Node2和Node3作为副本节点保存了和主节点完全相同的数据,这样任何一个节点挂掉都不会影响业务的搜索。满足服务的高可用要求。

但是有一个致命的问题,无法实现系统扩容!即使添加另外的节点,对整个系统的容量扩充也起不到任何帮助。因为每一个节点都完整保存了所有的文档数据。

因此,ES引入了分片(Shard)的概念。

PB级数量的基石——分片(Shard)

ES将每个索引(ES中一系列文档的集合,相当于MySQL中的表)分成若干个分片,分片将尽可能平均地分配到不同的节点上。比如现在一个集群中有3台节点,索引被分成了5个分片,分配方式大致(因为具体如何平均分配取决于ES)如下图所示。

添加图片注释,不超过 140 字(可选)

这样一来,集群的横向扩容就非常简单了,现在我们向集群中再添加2个节点,则ES会自动将分片均衡到各个节点之上:

 

高可用 + 弹性扩容

副本和分片功能通力协作造就了ES如今高可用和支持PB级数据量的两大优势。

现在我们以3个节点为例,展示一下分片数量为5,副本数量为1的情况下,ES在不同节点上的分片排布情况:

​

 

有一点需要注意,上图示例中主分片和对应的副本分片不会出现在同一个节点上,至于为什么,大家可以自己思考一下。

文档的分布式存储

ES是怎么确定某个文档应该存储到哪一个分片上呢?

​

 

通过上面的映射算法,ES将文档数据均匀地分散在各个分片中,其中routing默认是文档id。

此外,副本分片的内容依赖主分片进行同步,副本分片存在意义就是负载均衡、顶上随时可能挂掉的主分片位置,成为新的主分片。

现在基础知识讲完了,终于可以进行搜索了。

ES的搜索机制

一图胜千言:

 

  1. 客户端进行关键词搜索时,ES会使用负载均衡策略选择一个节点作为协调节点(Coordinating Node)接受请求,这里假设选择的是Node3节点;

  2. Node3节点会在10个主副分片中随机选择5个分片(所有分片必须能包含所有内容,且不能重复),发送search request;

  3. 被选中的5个分片分别执行查询并进行排序之后返回结果给Node3节点;

  4. Node3节点整合5个分片返回的结果,再次排序之后取到对应分页的结果集返回给客户端。

注:实际上ES的搜索分为Query阶段和Fetch阶段两个步骤,在Query阶段各个分片返回文档Id和排序值,Fetch阶段根据文档Id去对应分片获取文档详情,上面的图片和文字说明对此进行了简化,请悉知。

现在考虑客户端获取990~1000的文档时,ES在分片存储的情况下如何给出正确的搜索结果。

获取990~1000的文档时,ES在每个分片下都需要获取1000个文档,然后由Coordinating Node聚合所有分片的结果,然后进行相关性排序,最后选出相关性顺序在990~1000的10条文档。

 

页数越深,每个节点处理的文档也就越多,占用的内存也就越多,耗时也就越长,这也就是为什么搜索引擎厂商通常不提供深度分页的原因了,他们没必要在客户需求不强烈的功能上浪费性能。

solr搜索引擎支持分页 solr搜索引擎支持分页 有问题可以QQ(271287607) 立即下载

相关推荐

告别重复劳动:用Python+pywinauto打造你的微信个人助理(自动回复/收款/定时发消息)

本文介绍如何利用Python和pywinauto库构建微信个人助手,实现自动回复、定时消息、智能收款等功能,告别重复劳动。通过详细的代码示例和配置指南,帮助开发者快速掌握微信自动化技术,提升工作效率。

weixin_42568801的博客 332

Google推出可连续滚动的移动搜索体验,网友:大可不必

Google带来可连续滚动的移动搜索体验

super111t的博客 2141

FPGA以太网接口设计避坑指南:GMII与RGMII时序转换的三种实现方案对比

本文深入解析FPGA以太网接口设计中GMII与RGMII时序转换的三种实现方案,包括Xilinx官方IP核、手工原语逻辑和开源方案gmii_to_rgmii。通过对比分析各方案的优缺点和适用场景,为工程师提供技术选型指南,帮助避免常见设计陷阱,提升高速网络设备开发的效率和可靠性。

weixin_42570484的博客 387

google 显示分页数

google 显示分页数 介绍:根据当前页数、最大页数,显示需要输出的页数集合   相关参数:当前页、最大页数 输出结果:页数集合 要求:   1.一次显示10页   2.显示页数的范围以当前页中点,向前取5页、向后取4页,             如当前页码是10则输出                     5、6、7、8、9、10、11、12、

metecyu的专栏 2036

InfiniteTalk (Wan2.1) 数字人 A800 落地实战:从依赖地狱到完美运行的保姆级指南

摘要:本文详细记录了在A800(80GB)服务器上部署InfiniteTalk开源数字人项目的完整流程。该项目基于阿里Wan2.1视频生成模型,支持无限时长流式生成,但环境配置极其复杂。作者总结了18个关键问题点,包括Python版本冲突、CUDA算子缺失等,并提供了黄金配置方案:使用Python3.10+PyTorch2.5.1环境,精准控制FlashAttention等核心库版本,以及针对A800的显存优化策略。最终实现480P视频30秒/步的生成速度,相比默认配置提升3.7倍性能。

软件工程师文艺 2044

ADS实战指南:负载牵引(Loadpull)在射频功放设计中的关键应用

本文深入解析了负载牵引(Loadpull)技术在射频功率放大器设计中的核心作用与实战方法。通过生动的比喻和详细的ADS软件操作指南,阐述了如何通过系统扫描负载阻抗,在史密斯圆图上绘制等功率线与等效率线,从而精准找到最优阻抗点,以平衡输出功率与效率,是应对5G等现代通信系统严苛要求的必备技能。

weixin_29198045的博客 602

谷歌浏览器网页显示不完整解决方法

谷歌浏览器是非常多用户都在用的一款电脑软件,谷歌浏览器以启动速度快、浏览速度快、界面简单、极强的稳定性等优点受到大家的喜爱,在使用的时候,您可能会遇到打不开网页或显示不全等情况, 那么谷歌浏览器显示不完全怎么解决呢?速印机(理想、荣大等)、复印机(夏普、东芝、理光、佳能、震旦等全系列)、打印机、扫描仪、传真机、多媒体教学一体机、交互式电子白板、报警器材、监控、竞业达监考设备及其它监考设备、听力考试设备、特种安防设备维护及维修。5、找到红色圈里面的这项,【保护您和您的设备不受危险网站的侵害】;

rtkj1122的博客 1万+

从零开始:如何用Python建立你的第一个人工智能模型

在这篇文章中,我们将介绍如何从零开始使用Python建立你的第一个人工智能模型。无论你是刚接触编程的新手,还是有经验的开发者想进一步探索人工智能领域,这篇文章都将为你提供清晰、详细的指南。我们将一步步探索数据预处理、模型建立、训练和测试的过程,以及如何解读模型的结果。

Allen1862105的博客 4万+

【亲测免费】 探索无限图像资源:Google Images Search 开源宝藏

探索无限图像资源:Google Images Search 开源宝藏 在当今这个视觉为王的时代,寻找高质量的图片变得至关重要。今天,我们要向您推荐一款强大的工具——Google Images Search,一个基于Python的库,它解锁了谷歌图像搜索的强大功能,使开发者和爱好者能够轻松集成并自动化图像搜索过程。 项目介绍 Google Images Search是一个开源库,允许用户通过API...

gitblog_00022的博客 1380

CANoe.Diva实战:基于CDD的UDS诊断自动化测试全流程解析

本文详细解析了使用CANoe.Diva进行基于CDD的UDS诊断自动化测试的全流程,包括环境搭建、CDD文件配置、测试范围设置、用例生成与验证、CANoe集成测试及报告分析。通过实战经验分享,帮助工程师快速掌握诊断自动化测试技巧,提升测试效率与质量。

weixin_29258297的博客 219

uniapp - web-view嵌套H5网页白屏问题,<web-view>页面跳转出现白屏情况,强力解决uniapp嵌套webview页面时出现无法加载并白屏(无论本地还是线上H5网页链接都能解决)

uniapp微信小程序,uniapp APP端,uni-app web-view嵌套H5项目白屏问题分析及解决,uniapp嵌套webview页面时,出现白屏,uniapp <web-view>页面跳转出现白屏解决方法,uniapp <web-view>页面跳转出现白屏解决方法,解决uniapp的web-view打开网页在老手机上出现白屏的问题,uni-app web-view白屏处理,引入本地网页白屏,WebView 加载不出网页,一片空白webview白屏加载不出来,使用webview加载链接后白屏,u

🏆 前端领域优质创作者 1万+

把 Google 搜索伪装成百度搜索?!

(给程序员的那些事加星标)标题有点奇怪?别着急,慢慢往下看。用户脚本用户脚本是一段优化网页浏览体验的代码。有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则...

程序员的那些事 2490

【异常检测】【EfficientAD】论文简单梳理与代码实现

EfficientAD作为较近的一篇异常检测网络,主要还是从S-T网络入手,对齐进行了相关改进。修改特征提取器引入自动编码器hard loss以及惩罚项。

胡侃有料的博客 2859

使用 Google Workspace edu (G-Suite Workspace edu) 教育订阅快速获取无限Adobe订阅

使用 Google Workspace edu (G-Suite Workspace edu) 教育订阅快速获取无限Adobe订阅

reddingtons的博客 2895

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Google优化搜索体验:全新动态摘要功能(Beta)为欧洲用户带来更丰富的结果

随着欧盟《数字市场法案》(DMA)的实施,Google被要求提升搜索结果的公平性和多样性,尤其是在欧洲经济区(EEA)。动态摘要功能的推出正是这一背景下的产物,旨在为聚合网站(如旅游、购物、本地服务)提供更丰富的展示机会,同时增强用户体验。这项功能目前处于Beta阶段,仅限于EEA国家,支持桌面端和移动端。动态摘要是一种新型的富媒体搜索结果,允许用户直接在搜索页面上查看关键信息,例如价格、评分、图片或简短描述,而无需点击进入网站。

lssffy的博客 1238

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

googlesearch:Python实现Google搜索的终极指南

googlesearch是一个强大的Python库,让开发者能够轻松地从Python代码中实现Google搜索功能。无论是获取搜索结果、进行信息挖掘还是构建自动化工具,这个库都能提供简单而高效的解决方案。 ## 快速了解googlesearch googlesearch项目提供了Python bindings to the Google search engine,让你能够以编程方式访问Goo

gitblog_01022的博客 858

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

探索Google Play的无限可能:Google Play Python API

探索Google Play的无限可能:Google Play Python API 项目介绍 Google Play Python API 是一个非官方的Google Play交互API,旨在为开发者提供一个强大的工具,以便在Python环境中与Google Play进行交互。该项目基于GooglePlayAPI项目,并在此基础上进行了重要的更新和改进。通过这个API,开发者可以轻松地搜索、下载应...

gitblog_00194的博客 535

Google搜索技巧

Google搜索技巧

fstarSea的博客 2502

Google搜索的PageRank算法

Google搜索的Pagerank算法 文章目录Google搜索的Pagerank算法背景和问题搜索引擎工作流程问题Google搜索的核心算法PageRank算法思想简介PageRank-转化为线性代数问题PageRank的随机浏览模型Rank leakRank SinkPageRank计算PageRank算法的缺点TrustRank算法TrustRank算法的工作原理 背景和问题 搜索引擎工作流...

Joselynzhao 2519

UDS终极指南:如何在Google Drive上实现无限存储空间

UDS(Unlimited Drive Storage)是一个创新的开源工具,它巧妙利用Google Docs不占用存储配额的特性,让你在Google Drive上获得真正的无限存储空间!🚀 ## 为什么选择UDS? 你是否曾经为Google Drive的存储空间限制而烦恼?15GB的免费空间对于存储大型文件来说远远不够。UDS通过独特的技术方案解决了这个问题: - **零成本扩展**:利

gitblog_00511的博客 445
上一篇: 别被骗了,try-catch语句真的会影响性能吗?
下一篇: SpringBoot + JWT + Redis 开源知识社区系统
java小姜在线冲
博客等级 码龄4年 53粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值