Поиск лучших совпадений для строкового значения - Oracle / Java - PullRequest
1 голос
/ 09 ноября 2011

В продолжение моего предыдущего поста Ссылка здесь , другая проблема, с которой мы сейчас сталкиваемся, - найти лучшее соответствие для поля адреса [ADDR_LINE_1, ADDR_LINE_2, CITY, STATE, ZIP].

Мы хотим вернуть все записи в базе данных, которые могли бы быть возможными совпадениями с входящей записью об адресе [из файла]. Сценарий:

Ниже приведены 2 записи в базе данных;

ADDR_LINE_1,        ADDR_LINE_2       , CITY       , STATE, ZIP
001 Chestnut Avenue, Apt 100          , Indiana     , IN  , 9999
Apt 100            , 001 Chestnut Ave., Indianapolis, IN  , 9999

Для входящей записи, следующим образом

ADDR_LINE_1,        ADDR_LINE_2, CITY        , STATE, ZIP
1 Chestnut Avenue,   Apt 100   , Indiana     , IN   , 9999

Я хочу обнаружить запись как существующую и перечислить оба из указанных выше возможных совпадений.

[Примечание:] Порядок записей в базе данных поменялся местами, но все равно должен быть указан как возможное совпадение.

Может ли кто-нибудь предоставить предложения относительно того, как я могу это сделать?

1 Ответ

6 голосов
/ 09 ноября 2011

В зависимости от версии Oracle вы можете использовать пакет UTL_MATCH , чтобы сгенерировать оценку сходства, а затем поэкспериментировать с тем, какой пороговый показатель вам кажется разумным.Например, существует 96-процентное сходство между строкой «Каштановая авеню 001» и строкой «Каштановая авеню 1» с использованием алгоритма Джаро-Винклера

SQL> select utl_match.jaro_winkler_similarity( '001 Chestnut Avenue',
  2                                            '1 Chestnut Avenue' )
  3    from dual;

UTL_MATCH.JARO_WINKLER_SIMILARITY('001CHESTNUTAVENUE','1CHESTNUTAVENUE')
------------------------------------------------------------------------
                                                                      96

Очевидно, вам, вероятно, понадобится выполнить некоторые действия.постарайтесь определить, какой вес дать различным полям - предположительно, например, у вас будет более высокий порог для сопоставления по городу, который, вероятно, будет относительно стандартизирован, чем по второй строке адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...