G*O
2 楼
网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,读
和写怎么弄的,特来请教各位大神。
比如我的use case是,支持
寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
,电影院...
首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
六位应该精度就够了。
然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
poi_table
id geohash name category....
SQL 的query可以这样 S3L3CT FROM table WHERE geohash Iike 9u9qv[%]
如果要查询酒吧
可以 geohash Iike 9u9qv[%] and category = bar
这样即使通过geohash 建立一个 index,效率似乎还是不够高。
如果用NoSQL, 应该怎么存,效率会比较高
1. 用什么类型的NoSQL
2. 具体怎么存。
3. 怎么处理POI 跃变的问题,比如处在边界上,两个POI的位置很近,但是geohash的
code相差非常大。
我的一个想法是用Key-Value store
key是GeoHashing的前五位,
比如 9u9qvc, 9u9qvb, 9u9qv8 是三个POI
那么我就存
key: 9u9qv
value: {9u9qvc:{name: xxxx, category: cinema} ,
9u9qvb: {name: yyyy, category: restaurant},
9u9qv8: {name: zzzz, category: bar }
这样要找用户5km范围内的,我就去数据库查 findKey("9u9qv"), 然后就能得到一个
清单。
如果需要返回 bar 类型的POI, 我在 application logic 里面去掉。
这种方法可行吗? 目前只有想法,想不出优缺点,请各位指导讨论。
和写怎么弄的,特来请教各位大神。
比如我的use case是,支持
寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
,电影院...
首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
六位应该精度就够了。
然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
poi_table
id geohash name category....
SQL 的query可以这样 S3L3CT FROM table WHERE geohash Iike 9u9qv[%]
如果要查询酒吧
可以 geohash Iike 9u9qv[%] and category = bar
这样即使通过geohash 建立一个 index,效率似乎还是不够高。
如果用NoSQL, 应该怎么存,效率会比较高
1. 用什么类型的NoSQL
2. 具体怎么存。
3. 怎么处理POI 跃变的问题,比如处在边界上,两个POI的位置很近,但是geohash的
code相差非常大。
我的一个想法是用Key-Value store
key是GeoHashing的前五位,
比如 9u9qvc, 9u9qvb, 9u9qv8 是三个POI
那么我就存
key: 9u9qv
value: {9u9qvc:{name: xxxx, category: cinema} ,
9u9qvb: {name: yyyy, category: restaurant},
9u9qv8: {name: zzzz, category: bar }
这样要找用户5km范围内的,我就去数据库查 findKey("9u9qv"), 然后就能得到一个
清单。
如果需要返回 bar 类型的POI, 我在 application logic 里面去掉。
这种方法可行吗? 目前只有想法,想不出优缺点,请各位指导讨论。
c*a
4 楼
这是唔吧, LYFT让你做的吧?
【在 G**O 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,读
: 和写怎么弄的,特来请教各位大神。
: 比如我的use case是,支持
: 寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: ,电影院...
: 首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: 然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
: poi_table
: id geohash name category....
【在 G**O 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,读
: 和写怎么弄的,特来请教各位大神。
: 比如我的use case是,支持
: 寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: ,电影院...
: 首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: 然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
: poi_table
: id geohash name category....
p*a
6 楼
可以用hbase存。查询的时候需要比较附近9个block的数据。
[在 GPRO (GoPro) 的大作中提到:]
:网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,
读和写怎么弄的,特来请教各位大神。
:比如我的use case是,支持
:寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
:,电影院...
:首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
六位应该精度就够了。
:然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
:poi_table
:id geohash name category....
:SQL 的query可以这样 S3L3CT FROM table WHERE geohash Iike 9u9qv[%]
:如果要查询酒吧
:..........
[在 GPRO (GoPro) 的大作中提到:]
:网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,
读和写怎么弄的,特来请教各位大神。
:比如我的use case是,支持
:寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
:,电影院...
:首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
六位应该精度就够了。
:然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
:poi_table
:id geohash name category....
:SQL 的query可以这样 S3L3CT FROM table WHERE geohash Iike 9u9qv[%]
:如果要查询酒吧
:..........
G*O
8 楼
思路和key value差不多吧?
row key 还是 9u9qv 。 然后里面可以存这个prefix下所有的POI。
问题就是如果要更大,或者更小范围,就需要另外存 9u9q, 。
还是说 row key 存的是每个POI 具体的位置,然后查询的时候做 range query
,
【在 p******a 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 可以用hbase存。查询的时候需要比较附近9个block的数据。
: [在 GPRO (GoPro) 的大作中提到:]
: :网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,
: 读和写怎么弄的,特来请教各位大神。
: :比如我的use case是,支持
: :寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: :,电影院...
: :首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: :然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
row key 还是 9u9qv 。 然后里面可以存这个prefix下所有的POI。
问题就是如果要更大,或者更小范围,就需要另外存 9u9q, 。
还是说 row key 存的是每个POI 具体的位置,然后查询的时候做 range query
,
【在 p******a 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 可以用hbase存。查询的时候需要比较附近9个block的数据。
: [在 GPRO (GoPro) 的大作中提到:]
: :网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,
: 读和写怎么弄的,特来请教各位大神。
: :比如我的use case是,支持
: :寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: :,电影院...
: :首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: :然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
J*S
9 楼
感谢人间真情,发10个包子。
p*a
10 楼
不是指定要查5km范围的地点吗?
[在 GPRO (GoPro) 的大作中提到:]
:思路和key value差不多吧?
:row key 还是 9u9qv 。 然后里面可以存这个prefix下所有的POI。
[在 GPRO (GoPro) 的大作中提到:]
:思路和key value差不多吧?
:row key 还是 9u9qv 。 然后里面可以存这个prefix下所有的POI。
m*n
12 楼
看一下geohash找neighbor的函数你就明白了。数据应该是扁平存的。
a*p
15 楼
re
h*1
17 楼
本来, 打算给你6块; 又改成5了
p*a
18 楼
距离加大就多查几个block中的点
[在 mknoodle (mknoodle) 的大作中提到:]
:哥,能5KM,也要能10KM啊
[在 mknoodle (mknoodle) 的大作中提到:]
:哥,能5KM,也要能10KM啊
a*i
20 楼
感觉应该是存最高精度的geohash
比如9位的
在起service的时候,从数据库里读出来,然后按照geohas建棵树
9: {...}
9u: {...}
9u9: {...}
【在 G**O 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,读
: 和写怎么弄的,特来请教各位大神。
: 比如我的use case是,支持
: 寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: ,电影院...
: 首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: 然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
: poi_table
: id geohash name category....
比如9位的
在起service的时候,从数据库里读出来,然后按照geohas建棵树
9: {...}
9u: {...}
9u9: {...}
【在 G**O 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 网上找到的资料一般都是在说geo hash原理是什么,基本没找到讨论具体怎么存储,读
: 和写怎么弄的,特来请教各位大神。
: 比如我的use case是,支持
: 寻找附近 5km 内的POI, 可以返回所有POI, 但是同时要支持分类查询:饭店,酒吧
: ,电影院...
: 首先想到GeoHashing来做,就是获取用户的地理位置,算出一个位置,比如 9u9qvu,
: 六位应该精度就够了。
: 然后要找附近 9u9qv[0] -- 9u9qv[z] 的所有的东西。我们可以用SQL
: poi_table
: id geohash name category....
a*9
21 楼
排包子
j*n
22 楼
1 如果是搜索引擎用lucene或者solr/elatic search
2 要建不同长度的geohash索引
搜索的时候 根据需要搜索的半径 选择长度合适的geohash
可以以用户所在geohash块为中心 搜9宫格 9宫格要能框住需要的圆 且9宫格越小越好
搜出来超过半径的结果放弃掉
这样应该没有边界问题
2 要建不同长度的geohash索引
搜索的时候 根据需要搜索的半径 选择长度合适的geohash
可以以用户所在geohash块为中心 搜9宫格 9宫格要能框住需要的圆 且9宫格越小越好
搜出来超过半径的结果放弃掉
这样应该没有边界问题
a*u
24 楼
R tree
a*9
25 楼
排包子
R*s
29 楼
zan
o*w
30 楼
so cheap
5块就感动
5块就感动
t*u
34 楼
pai
g*3
35 楼
chi
i*x
37 楼
re
h*k
38 楼
you and him are blessed!
d*r
40 楼
你亏了,本来写的6刀
a*s
43 楼
有这种好事
j*1
44 楼
re
q*y
45 楼
co感动ing!
s*m
50 楼
re
b*6
51 楼
排
e*u
53 楼
re
b*7
54 楼
RE
w*r
55 楼
包子~!
b*n
56 楼
确实很感人
r*g
57 楼
re
x*u
58 楼
真不错,包子
w*e
60 楼
pai
b*p
61 楼
re
a*u
62 楼
re
相关阅读
认真请教:如何准备design?求西雅图地区的工作机会滴滴打车获上海专车拍照,对Uber是利好吧swjter今天火了啊新人进组一般多久开始FIX BUG?想回国了《外交政策》杂志对中国留美学生的简短调查 (转载)国内It业的女经理们Job refer有什么题比较体现水平但是国人比较会做的射频 RF/信号处理 DPD 实习职位Senior 安卓开发人员请进这两个程序员谁靠谱? (转载)我看到IT泡沫又要来了,真是特别的开心Post-Doc in Comp. Engr. @ UFlorida抱个阅后即焚包裹,从吗?说一个我知道的国内码农的CASE吧 (转载)真是surprise啊 (Apple)甲骨文在Minnesota的site怎么样?好的UML建模书籍/网站,尤其是和电商网站建模/设计相关的。