V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
venomD
V2EX  ›  程序员

贝壳网的「画圈找房」

  •  
  •   venomD · 2023-06-02 10:51:58 +08:00 · 4728 次点击
    这是一个创建于 538 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想请教一下各位大佬,贝壳的这个「画圈找房」的功能是咋实现的?

    主要的问题是他是如何做到很快的响应的呢?房源信息与地图位置是怎么存放的?

    希望了解的大佬不吝赐教

    贝壳画圈找房

    23 条回复    2023-06-21 10:02:02 +08:00
    dem0ns
        1
    dem0ns  
       2023-06-02 10:57:18 +08:00
    resblockIds 按 block 来查
    chiron688
        2
    chiron688  
       2023-06-02 10:58:00 +08:00
    gis 开发,挺简单的,存个房源的 xy 或者经纬度坐标,然后识别路径的 xy 信息,在这范围内的就是了
    ww940521
        3
    ww940521  
       2023-06-02 10:59:07 +08:00
    我们公司的 GIS 也有这个功能,就是用的地图的 SDK 实现的,很简单。
    hhjswf
        4
    hhjswf  
       2023-06-02 10:59:21 +08:00 via Android
    redis 有个 geo 的数据类型
    j3llypunk777
        5
    j3llypunk777  
       2023-06-02 11:02:33 +08:00   ❤️ 1
    es polygon 查询,每个房源都有自己的经纬度数据,页面上的点聚合效果是地图自带的功能,我做过几乎一样的需求
    danieladu
        6
    danieladu  
       2023-06-02 11:07:23 +08:00
    盲猜就是 GEOHASH
    macttt
        7
    macttt  
       2023-06-02 11:45:40 +08:00
    开水团团有一篇基于 R-Tree 服务和 ElasticSearch 的 Terms 命令来实现的类似功能,他么针对这一步骤还对 ES 的 terms 进行了定制化增强: https://tech.meituan.com/2022/11/17/elasicsearch-optimization-practice-based-on-run-length-encoding.html
    shawndev
        8
    shawndev  
       2023-06-02 12:06:17 +08:00
    keyword: geo-polygon
    sadfQED2
        9
    sadfQED2  
       2023-06-02 13:47:35 +08:00 via Android
    es 传 polygon ,如果精度要求差一点可以 geohash
    WhereverYouGo
        10
    WhereverYouGo  
       2023-06-02 14:22:43 +08:00
    @j3llypunk777 #5 同 5 楼
    githmb
        11
    githmb  
       2023-06-02 15:01:48 +08:00
    这就不得不提 PostgreSQL 的牛逼之处了
    qiayue
        12
    qiayue  
       2023-06-02 15:15:20 +08:00
    说个题外话,这个功能很好用,尤其是已经确定了学校的学区,只能在学区内换房时,特别好用
    ql562482472
        13
    ql562482472  
       2023-06-02 15:15:52 +08:00
    postgis 几个函数的事情 很容易
    Worldispow
        14
    Worldispow  
       2023-06-02 15:20:42 +08:00
    @githmb 数据分析做的多了就会发现,pg 真是吊着 mysql 锤
    leechen
        15
    leechen  
       2023-06-02 15:34:21 +08:00
    @githmb 这是懂的,PostgreSQL 内置了地理信息的数据格式和函数
    hldnpqzzy
        16
    hldnpqzzy  
       2023-06-02 16:37:04 +08:00
    geohash 吧
    qigge2014
        17
    qigge2014  
       2023-06-02 17:30:00 +08:00
    mysql ST_Distance_Sphere 函数也可以
    Ericcccccccc
        18
    Ericcccccccc  
       2023-06-02 17:32:58 +08:00
    搜 geohash, 然后数据放进 redis 就行.
    txy3000
        19
    txy3000  
       2023-06-02 17:46:21 +08:00
    kd 树 qlog(n)
    cp19890714
        20
    cp19890714  
       2023-06-02 19:39:21 +08:00 via Android
    postgre 可以处理 gis 相关数据,内置一堆 gis 函数和算法。比如:给出两点,算出最短路径,它都可以。
    LaurelHarmon
        21
    LaurelHarmon  
       2023-06-02 23:08:01 +08:00
    应该得用到图形学吧,判断一个区域是否在多边形内部
    LLaMA2
        22
    LLaMA2  
       2023-06-03 11:13:42 +08:00
    仔细阅读 GEOHASH 的原理,等读完了,发现还有很多现成的实现
    GEOHASH 存在很多年了
    Rain59
        23
    Rain59  
       2023-06-21 10:02:02 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:04 · PVG 23:04 · LAX 07:04 · JFK 10:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.