【问题标题】:TSQL Fuzzy address matching grouping, 2019 EditionTSQL模糊地址匹配分组,2019版
【发布时间】:2019-04-25 23:58:30
【问题描述】:

我遇到过这种情况,人们要求在错误的地址上进行分组。而且我需要使用我拥有的工具/环境,我无法选择 Google API 或 3rd 方数据科学工具。我也做了我的硬件,看到几年前的帖子,所以仍然想检查所有可用的更新。 在我的场景中,人们希望将 ID 1-6 分组为单个,其余部分我添加用于否定测试。

SELECT * INTO #t FROM ( --test data:   select * from #t          drop table #t
    SELECT 1 Id,  '1 CROLANA HEIGHTS' Adr UNION   -- A vs O
    SELECT 2 Id, '1 CROLONA HEIGHTS' Adr union
    SELECT 3 Id, '1 CROLONA HEIGHT DRIVE' Adr union
    SELECT 4 Id,'1 CROLONA HEIGHTS DR' Adr union
    SELECT 5 Id, '1 CROLONA HGHTS DR' Adr union
    SELECT 6 Id, '1 CROLONA HTS DR' Adr  UNION
    ---------------------------------------- rest should not match
    SELECT 7 Id, '1 CORWING DR' Adr  UNION  
    SELECT 8 Id, '1 SUNNYHILL DRIVE' Adr  UNION
    SELECT 9 Id, '1 CROWN HILL DR' Adr  UNION
    SELECT 10 Id, '1 ADDISON DRv' Adr  ) a 
-------------------  and below is my fuzzy working script which can be improved)



SELECT  id,   adr, LEAD(adr,1) OVER ( ORDER BY adr ) adr_lead,
        SOUNDEX(adr) Sdx,  DIFFERENCE(adr, LEAD(adr,1) OVER ( ORDER BY adr )) diff
    ---     SOUNDEX(adr), COUNT(*) c
FROM #t 
--GROUP BY  SOUNDEX(adr)
WHERE SOUNDEX(adr) = SOUNDEX('1 CROLANA HEIGHTS')

【问题讨论】:

  • Soundex 专为匹配名称而设计。与以数字开头的字符串一起使用,返回的值将始终为'0000'Difference 将为4This 问题很相似,而且很新。
  • 一种方法可能是首先使用多个REPLACEHEIGHTS 的所有变体更改为一个,DRIVE 也是如此。解决这个烂摊子需要几个小时,但我很确定,这至少会大大减少问题。对于模糊搜索,我建议将其拆分为片段并逐个进行比较。

标签: tsql fuzzy-comparison


【解决方案1】:

有些建议我很乐意采纳。我在字符串和独立单词的末尾使用了 intell replace 来改进数据。

    DECLARE @st VARCHAR(100) = 'La_Beg_10 La_midleMacy La'  --replace et the end of string

SELECT 'ryba', @st, '-->' f, CASE WHEN @st LIKE '%' + ' La' 
      THEN SUBSTRING(@st,1,LEN(@st) - LEN('La')) + 'Lane' ELSE @st END N

【讨论】:

  • 这篇文章看起来不像是试图回答这个问题。这里的每一篇文章都应该明确地尝试回答这个问题;如果您有批评或需要澄清问题或其他答案,您可以在其下方直接post a comment(如这个)。请删除此答案并创建评论或新问题。见:Ask questions, get answers, no distractions
  • 这个问题没有解决办法,所以就关闭了
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 2022-01-06
  • 2016-07-07
  • 2019-12-28
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多