zoukankan      html  css  js  c++  java
  • 服务端如何做国内外选择城市功能

    选择只是用户的行为,而服务端需要做好城市的储存,搜索。

    国内城市选择效果:

    首先只考虑字段之间的关系。

    范围是从大到小的:省份--城市--地区

    外键关系:一个省份 -- 多个城市;一个城市--多个地区

    如何储存:

    1. 省份,城市,地区各为一个字段,放在用户的 model 中

    2. 只储存最小的、最具体的地点。比如地区。通过地区与其他字段的关系,获取其他字段的值。

    国外城市的选择

    各个国家的行政地区会存在差异。所以如果要兼容国内国外,行政关系就不能固定。将数据储存在树中,用户可以选择任意级别的节点。叶子节点为城市。

    在搜索或使用时,将对应节点转化为城市。 转化过程:如果节点为叶子节点,则不变;否则,转化为该节点下所有的城市。比如,选择了悉尼,那么城市为悉尼,选择了澳大利亚,城市为澳大利亚所有城市。

    数据库设计

    创建一个 Area model,然后添加联接到自身的外键 sub_areas。

    如果一个 area 的 sub_areas 为空,则其为叶子节点。

    参考其他人如何设计这个的:

    拉勾

     只存在中国城市。

    没有使用行政地区划分,而是使用城市的拼音首字母分类。参考网址

    优点:易于扩展。全部在一个页面,可以使用文字搜索功能。

    缺点:选择的时候不好选。只能使用城市一级。

    搜索

    使用get参数,?city=广州

    直接在搜索框输入

    直接在搜索框输入城市+职位名(如:北京 产品经理)

    试了一下,发现不准。比如我搜索 `广州 Python`,第一个搜索结果是产品经理的职位,还有其他不相关职位。

    如果实力不够,就不要用类似搜索引擎的搜索,直接给用户选择框选择比较好。

    51job

    智联

    难度更高的

    跨国企业

    谷歌

    优步

    更具体的

    找房子的。

    58同城

    stackoverflow 上的相关问题

    Best way to store / structure mysql world country, states, districts, cities…?

    What is the “best” way to store international addresses in a database?

  • 相关阅读:
    别人好的资源路径
    是否为微信浏览器,苹果安卓判断
    iframe滚动条置顶
    hadoop之MapReduce WordCount分析
    CentOS FTP服务器权限控制
    linux之sed用法
    hdfs-over-ftp安装与配置
    mysql grant all privileges on
    Notepad++快捷键大全
    coconHashMap实现原理分析
  • 原文地址:https://www.cnblogs.com/jay54520/p/6618598.html
Copyright © 2011-2022 走看看