如何精准查询附近的人?

简介: 通过区域编码定位自身位置,结合周围8个邻接区域编码,构建候选用户集。利用水平与垂直编码的奇偶位特性,快速推算邻区编码,查询9个区域内的所有用户,精确计算距离并排序,实现高效、无遗漏的附近人检索,兼顾准确性与性能优化。

既然邻接区域的人距离我们更近,那我们是不是可以建立一个更大的候选集合,把这些邻接区域的用户都加进去,再一起计算距离和排序,这样问题是不是就解决了呢?我们先试着操作一下。

对于目标所在的当前区域,我们可以根据期望的查询半径,以当前区域为中心向周围扩散,从而将周围的区域都包含进来。假设,查询半径正好是一个区域边长的一半,那我们只要将目标区域周围一圈,也就是 8 个邻接区域中的用户都加入候选集,这就肯定不会有遗漏了。这时,虽然计算量提高了 8 倍,但我们可以给出精准的解了。

如果要降低计算量,我们可以将区域划分的粒度提高一个量级。这样,区域的划分就更精准,在查询半径不变的情况下,需要检索的用户的数量就会更少(查询范围对比见下图中两个红框部分)。

知道了要查询的区域有哪些,那我们怎么快速寻找这些区域的编码呢?这就要回到我们区域编码的方案本身了。前面我们说了,区域编码可以根据奇偶位拆成水平编码和垂直编码这两块,如果一个区域编码是 0110,那它的水平编码就是 01,垂直编码就是 10。那该区域右边一个区域的水平编码的值就比它自己的大 1,垂直编码则相同。因此,我们通过分解出当前区域的水平编码和垂直编码,对对应的编码值进行加 1 或者减 1 的操作,就能得到不同方向上邻接的 8 个区域的编码了。

以上,就是精准查询附近人的检索过程,我们可以总结为两步:
● 第一步,先查询出自己所属的区域编码,再计算出周围 8 个邻接区域的区域编码;
● 第二步,在索引中查询 9 次,取出所有属于这些区域中的人,精准计算每一个人和自己的距离,最后排序输出结果。

相关文章
|
安全 Java 应用服务中间件
WebLogic Server 远程代码执行漏洞(CVE-2023-21839/CNVD-2023-04389)
WebLogic Server 存在远程代码执行漏洞,攻击者通过特定Payload对目标服务器进行恶意利用从而获取服务器控制权限,进一步操作。
1152 1
|
Windows
Windows常见可读写目录的探测
Windows常见可读写目录的探测
649 0
Windows常见可读写目录的探测
|
存储 数据采集 数据挖掘
质量追溯系统方案
质量追溯系统方案
1119 1
|
存储 缓存 搜索推荐
session 详解:掌握客户端会话管理
session 详解:掌握客户端会话管理
|
人工智能 安全 API
2025电商API新特性:实时数据流、GraphQL接口与隐私合规
2025年电商API迎来技术与合规双重革新,实时数据流、GraphQL接口、隐私合规成为核心突破方向,推动全息电商、动态定价、供应链协同等场景升级,实现性能优化与用户隐私保护的协同发展。
|
9月前
|
人工智能 边缘计算 网络协议
中国境内Vertex AI服务商技术架构深度解析
随着生成式AI发展,Google Vertex AI成企业首选,但中国用户面临网络延迟、数据合规与系统集成难题。专业合规服务商应运而生,通过QUIC传输优化、AST代码脱敏与协议转换网关,构建“逻辑缓冲区”,实现低延迟、高合规的AI服务接入。穿扬科技等企业整合边缘网络、语义分析与智能路由,保障数据主权同时,提升性能并降低成本,助力跨国AI能力本土化落地。(238字)
|
11月前
|
监控 算法 NoSQL
《服务治理》限流:微服务架构的"流量阀门"
限流是保护系统稳定的核心技术,通过控制请求速率防止过载。本文详解了固定窗口、滑动窗口、漏桶、令牌桶等算法原理与场景,并结合Sentinel实现应用级限流及Redis分布式限流,涵盖自定义限流器、动态阈值调整与监控告警体系,构建多层级防护,确保高并发下的系统可靠性与用户体验。
|
存储 人工智能 运维
自我提升可以从哪些方面:AI时代的能力重构与终身进化
在数字技术与AI快速发展的背景下,自我提升从“阶段式学习”转变为“持续性进化”。文章从认知升级、技能进化、生态构建三个维度解析AI时代个人能力提升的核心路径。强调个体需从知识积累转向能力重构,通过批判性思维、跨域关联和动态适应性实现思维跃迁;同时构建复合能力体系,并借助AI工具与协作网络,在数字化转型中扮演价值创造者角色。最终,自我提升将超越传统框架,成为能力生态的动态演进过程。
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
809 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
842 2