如何提升搜索系统查询速度?

2024-06-22 14:58

本文主要是介绍如何提升搜索系统查询速度?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 导语

为什么同样的查询我的代码要1s,别人的只要50ms?

为什么百度搜图可以处理上亿数据最近邻而我的机器几百万数据查询就很慢?

对于大部分互联网服务,网站相应时间和用户满意度是非常相关的。如果你是一家电商创业公司,用户输入一个Query后1~2s都没有结果显示,这时间就足够他放弃你们的产品转而去访问淘宝或者京东,开始新的一次查询。

image

在当今这个移动互联网时代,我们的日常生活每天都面临着海量数据地冲击,诸如像个人信息、视频 记录、图像采集、地理信息、日志文档等,面对如此庞大且日益增长的数据信息,如何对我们需要的海量信息有效的存储及索引,以便快速查询是目前国内外研究的热点。

2 最近邻搜索

日志、图像、视频等数据的查找的本质是最近邻搜索任务

最近邻检索就是根据数据的相似性,从数据库中寻找与目标数据最相似的项目,而这种相似性通常会被量化到空间上数据之间的距离,可以认为数据在空间中的距离越近,则数据之间的相似性越高。

最近邻搜索一般方法:线性查找

最简单的近邻搜索涉及数据集中所有成对点之间距离的暴力计算,也就是平常所说的穷举搜索。

在数据库中依次计算其中样本与所查询数据之间的距离,抽取出所计算出来的距离最小的样本即为所要查找的最近邻。

一般方法索面临的挑战:

对于小数据样本,高效的暴力近邻搜索是非常有竞争力的。然而,随着样本数N的增长,暴力方法失去了可行性。

搜索和推荐系统的计算量很大,我们面对和需要处理的数据往往是海量并且具有很高的维度(high dimensional spaces),同时数据中又普遍存在着近似相同的情况(例如相似的对话、相似的网页、相似的图片等),怎样快速地从海量的高维数据集合中找到与某个数据近似相似(approximate or exact Near Neighbor)的一个数据或多个数据,成为了一个难点和问题。

3 近似最邻近搜索

面对庞大的数据量以及数据库中高维的数据信息,现有的基于 最近邻搜索 的检索方法无法获得理想的检索效果与可接受的检索时间。进而有研究人员开始关注近似最近邻检索(Approximate Nearest Neighbor,ANN)

近似最近邻检索利用了数据之间形成簇状聚集分布的特性,通过对数据分析聚类的方法对数据库中的数据进行分类或编码,完成对全空间分割,将其分割成很多小的子空间,在搜索的时候,通过某种方式,快速锁定在某一子空间,然后在该子空间里做遍历。

近似最近邻检索的核心思想是搜索可能是近邻的数据项而不再只局限于返回最可能的项目,在牺牲可接受范围内的精度的情况下提高检索效率。

可以将ANN的方法分为三大类:基于树的方法、哈希方法、矢量量化方法。

3.1 基于树的近似最近邻算法

当待搜索数据维度为一的时候:只要采用传统的二分查找法或者各类平衡树就能找到最近邻,比如下图利用二分检索树总众多一维数据中快速找到符合要求的数据可以大幅缩小计算的次数。

二分检索树

当数据维度不太高(如d< 20),通常采用树型索引结构对数据进行分区以实现高效索引,如最经典的KD树算法 、R树、M树等等,它们的时间和空间复杂度都是以d为指数的指数级别的,在实际搜索时也取得了良好的效果。

其中,KD-Tree 是由 Finkel 和 Bentley 共同设计提出的对二叉搜索树的推广,利用KD-Tree 我们可以对一个由 K 维数据组成的数据集合进行划分,划分时在树的每一层上根据设定好的分辨器(discriminator)选取数据的某一维,比较待分配数据与节点数据在这一维度上数值的大小,根据结果将数据划分到左右子树中。

比如X= {(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}这样的一个由6个点构成的二维点集,我们首先对它的第一维X进行划分,根据二分将(7,2)作为根节点,那么数据点的x轴小于7的划分到左子树,大于7的划分到右子树;再对第二维Y进行划分时,则根据数据点的y轴的大小进行左右划分。

undefined

那么对于k维的点集,我们只需要依照上面的方法进行k层这样的划分就可以构成一棵KD-Tree 。在做最近邻检索时,只需要从根节点到叶子节点自上而下的检索较线性查找节省了大量时间。

undefined

3.2 基于哈希的近似最近邻算法

局部敏感哈希(Locality-Sensitive Hashing, LSH)是用来解决高维检索问题的经典基于哈希法的近似最近邻算法。

由于线性搜索,时间复杂度极高,效率地下。LSH作者从以下几个方面进行了思考:

  • 既然原空间计算难度大,能否找到另外一个空间,而在这个空间中计算更加简便?
  • 在进行检索的时候是不是一定要线性的计算所有数据集的距离?

针对第一个问题,作者想到的是进行空间转换,但这个空间转换得保证在原空间相近的点,在转换后依然相近;同样,之前距离较远的点,转换后依然较远。同时考虑到用Hamming距离代替欧式距离的计算。Hamming距离的计算公式是:

H ( p 1

这篇关于如何提升搜索系统查询速度?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084614

相关文章

房产证 不动产查询

陕西政务服务网(便民服务)陕西政务服务网(手机版?更直观)不动产权证书|不动产登记证明(电子证照)商品房合同备案查询权利人查询

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何优化数据库查询性能,这是提升应用程序响应速度和用户体验的关键技术。 优化数据库查询性能的重要性 在现代应用开发中,数据库查询是最常见的操作之一。随着数据量的增加和业务复杂度的提升,数据库查询的性能优化显得尤为重

PS系统教程25

介绍软件 BR(bridge) PS 配套软件,方便素材整理、管理素材 作用:起到桥梁作用 注意:PS和BR尽量保持版本一致 下载和安装可通过CSDN社区搜索,有免费安装指导。 安装之后,我们打开照片只需双击照片,就自动在Ps软件中打开。 前提:电脑上有PS软件 三种预览格式 全屏预览 评星级 直接按数字键就可以 方向键可以更换图片 esc退出 幻灯片放

BD错误集锦9——查询hive表格时出错:Wrong FS: hdfs://s233/user/../warehouse expected: hdfs://mycluster

集群环境描述:HDFS集群处于HA模式下,同时启动了YARN\JN\KAFKA\ZK。 现象: FAILED: SemanticException Unable to determine if hdfs://s233/user/hive/warehouse/mydb.db/ext_calllogs_in_hbase is encrypted: java.lang.IllegalArgument

风水研究会官网源码系统-可展示自己的领域内容-商品售卖等

一款用于展示风水行业,周易测算行业,玄学行业的系统,并支持售卖自己的商品。 整洁大气,非常漂亮,前端内容均可通过后台修改。 大致功能: 支持前端内容通过后端自定义支持开启关闭会员功能,会员等级设置支持对接官方支付支持添加商品类支持添加虚拟下载类支持自定义其他类型字段支持生成虚拟激活卡支持采集其他站点文章支持对接收益广告支持文章评论支持积分功能支持推广功能更多功能,搭建完成自行体验吧! 原文

【文末附gpt升级秘笈】腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑

腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑 一、引言 随着人工智能技术的飞速发展,自然语言处理(NLP)和机器学习(ML)在各行各业的应用日益广泛。其中,AI搜索解析能力作为信息检索和知识抽取的核心技术,受到了广泛的关注和研究。腾讯作为互联网行业的领军企业,其在AI领域的探索和创新一直走在前列。近日,腾讯旗下的AI大模型应用——腾讯元宝,迎来了1.1.7版本的升级,新版本在AI搜