Redian新闻
>
网站上怎么做地址搜索以及如何存数据库
avatar
网站上怎么做地址搜索以及如何存数据库# Java - 爪哇娇娃
j*3
1
弱问个简单都问题。。。却让我想了一阵子
之前我存地址,都是在model里分几个field,city, street, number什么的,然后做地
址搜索。可是发现这个不现实:
1. 街道会有缩写吧, 有人写street, 有写 str, 或者st的,什么ave, dr, circle就更
多了。不可能都存吧?也不可能每次搜,都parse string,把st换成street啥的。。。
2. 有可能地址输入错了,或者是个模糊地址,这样一搜搜不到了。。。
然后,我发现google提供了个api,可是输入地址用google map搜。。。可是,又有了
新问题:
1. 这些地址,怎么存入数据库?存String呢,还是用这个string 在google maps上搜
完了之后,存 lat, lng?
2. 存的是精确的地址,可是搜的时候,如果搜的是一个模糊的地址,比如,只是个大
范围,怎么搜?
比如,搜mountain view, 可是数据库里,都是精确的地址,而且,都是string (这
里假设我上边那个问题,用的string存的), 难道把每个地址都搜一下看看是不是
mountain view?这样太没效率了吧?
怎么设计比较合理?谢谢大家提建议
avatar
F*n
2
弱问个简单都问题。。。却让我想了一阵子
之前我存地址,都是在model里分几个field,city, street, number什么的,然后做地
址搜索。可是发现这个不现实:
1. 街道会有缩写吧, 有人写street, 有写 str, 或者st的,什么ave, dr, circle就更
多了。不可能都存吧?也不可能每次搜,都parse string,把st换成street啥的。。。
- 索引和搜索之前要分析,比如不管"St."还是"Street",Analyzer都先转换为"Street
"。搜索和索引使用统一Analyzer
2. 有可能地址输入错了,或者是个模糊地址,这样一搜搜不到了。。。
- 可以用字典(hunspell)和模糊搜索
然后,我发现google提供了个api,可是输入地址用google map搜。。。可是,又有了
新问题:
1. 这些地址,怎么存入数据库?存String呢,还是用这个string 在google maps上搜
完了之后,存 lat, lng?
- 一般是Prefix Tree for String + Quadtree/Rtree for Coordinates
2. 存的是精确的地址,可是搜的时候,如果搜的是一个模糊的地址,比如,只是个大
范围,怎么搜?
比如,搜mountain view, 可是数据库里,都是精确的地址,而且,都是string (这
里假设我上边那个问题,用的string存的), 难道把每个地址都搜一下看看是不是
mountain view?这样太没效率了吧?
- 没明白啥意思
怎么设计比较合理?谢谢大家提建议
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。