用于识别具有类似地址

时间:2016-01-03 20:59:59

标签: sql

假设我有一个客户表,每个客户都有一个地址。我的任务是设计一个对象模型,允许按类似的地址对客户进行分组。例如:

  1. John 123 Main St,#A;洛杉矶,CA 90032
  2. Jane 92 N. Portland Ave,#1;帕萨迪纳,加利福尼亚州91107
  3. Peter 92 N. Portland Avenue,#2;帕萨迪纳,加利福尼亚州91107
  4. Lester 92 N Portland Av#4;帕萨迪纳,加利福尼亚州91107
  5. Mark 123 Main Street,#C;洛杉矶,CA 90032
  6. 查询应以某种方式返回:

    1 Similar_Address_Key1
    5 Similar_Address_Key1
    2 Similar_Address_key2
    3 Similar_Address_key2
    4 Similar_Address_key2
    

    实现这一目标的最佳方法是什么?请注意,地址不一致(某些地址有“Avenue”,其他地址有“Av”,公寓号不同)。现有的名称/地址数据无法更正,因此在表格上执行GROUP BY(地址)是不可能的。

    我正在考虑添加一个SIMILAR_ADDRESSES表来获取一个地址,对其进行评估并给它一个键,如下所示:

    cust_key  address                                        similar_addr_key
    1         123 Main St, #A; Los Angeles, CA 90032         1 
    2         92 N. Portland Ave, #1; Pasadena, CA 91107     2
    3         92 N. Portland Avenue, #2; Pasadena, CA 91107  2
    4         92 N. Portland Av #4; Pasadena, CA 91107       2
    5         123 Main Street, #C; Los Angeles, CA 90032     1
    

    然后按类似地址键分组。但问题是如何最好地完成“评估”部分。一种方法是修改SIMILAR_ADDRESSES表中的地址,使它们保持一致并忽略apt,#或suite之类的内容,并为每个完全匹配分配一个“键”。我想到的另一种不同的方法是将地址提供给Geolocator服务并将纬度/经度值保存到表中,并使用这些值生成类似的地址密钥。

    有什么想法吗?

0 个答案:

没有答案