TSQL Нечеткое сопоставление адресов, выпуск 2019 - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть такая ситуация, когда людей просят группировать по плохим адресам.И мне нужно работать над имеющимися инструментами / средой, у меня нет выбора для Google API или сторонних инструментов Data Science.Я также сделал мой HW, увидеть сообщения несколько лет назад, поэтому все еще хочу проверить все, если какие-либо обновления доступны.В моем сценарии люди хотят сгруппировать идентификаторы 1-6 в один, остальные я добавил для теста neg.

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')

1 Ответ

0 голосов
/ 26 апреля 2019

Есть предложения, которые я с удовольствием приму. Я использую замену intell в конце строки и отдельные слова для улучшения данных.

    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
...