nam*_*ked 1 java string oracle
继我之前的帖子链接,我们现在面临的另一个挑战是找到地址字段的最佳匹配[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
Run Code Online (Sandbox Code Playgroud)
对于传入记录,如下所示
ADDR_LINE_1, ADDR_LINE_2, CITY , STATE, ZIP
1 Chestnut Avenue, Apt 100 , Indiana , IN , 9999
Run Code Online (Sandbox Code Playgroud)
我想将记录检测为现有记录并列出上述两种可能的匹配.
[注意:]数据库条目的顺序是互换的,但仍应列为可能的匹配项.
任何人都可以提供关于我如何去做的建议吗?
根据Oracle版本的不同,您可以使用UTL_MATCH包生成相似性分数,然后根据您的阈值分数进行调整.例如,使用Jaro-Winkler算法,字符串'001 Chestnut Avenue'和字符串'1 Chestnut Avenue'之间有96%的相似性
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
Run Code Online (Sandbox Code Playgroud)
显然,你可能需要做一些工作来确定赋予各种领域的权重 - 例如,你可能有更高的门槛来匹配城市,这可能是相对标准化的,而不是第二行的地址.