Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:使用来自两个表的fuzzymatch进行地址匹配_Postgresql_Fuzzy Comparison_Soundex_Metaphone - Fatal编程技术网

PostgreSQL:使用来自两个表的fuzzymatch进行地址匹配

PostgreSQL:使用来自两个表的fuzzymatch进行地址匹配,postgresql,fuzzy-comparison,soundex,metaphone,Postgresql,Fuzzy Comparison,Soundex,Metaphone,我想做什么 我有两个带有两个地址列的表,它们都存储为text,我想创建一个返回匹配行的视图 我尝试过的 我已经在列和表上创建了索引,如下所示 在表1上创建索引idx_table1_fulladdress(下(fulladdress_ppd)) 然后运行以下命令: CREATE OR REPLACE VIEW view_adresscheck AS SELECT --from table1 table1.postcode, table1.fulladdress_ppd, --fr

我想做什么

我有两个带有两个地址列的表,它们都存储为
text
,我想创建一个返回匹配行的视图

我尝试过的

我已经在列和表上创建了索引,如下所示

在表1上创建索引idx_table1_fulladdress(下(fulladdress_ppd))

然后运行以下命令:

CREATE OR REPLACE VIEW view_adresscheck AS
SELECT 
--from table1
    table1.postcode,
    table1.fulladdress_ppd,
--from table2
    table2.epc_postcode,
    table2.fulladdress_epc 
FROM
    table1,
    table2
WHERE 
    table1.postcode = table2.epc_postcode
AND 
    table2.fulladdress_epc = table1.fulladdress_ppd ::text;
什么不起作用 上面返回的记录比我知道的要少。检查时,这是因为两个表之间的地址格式不一致

table1.fulladdress_ppd = Flat 2d The building the street
table2.fulladdress_epc = Flat 2/d The building the street, the town
该地址在表中的格式也不一致,即在
表中
并非所有地址都包括town,因此我无法使用
正则表达式
修剪
进行批量清理

然后我在postgres中看到了
fuzzystrmatch
,这听起来似乎可以解决我的问题

问题
Soundex、Levenshtein和Metaphone中哪一个最合适。大多数记录都是英文的,一些地名是运行在9.6上的盖尔语。

从不同来源匹配地址的经验谈起。您可以做的是为每个地址编制索引。无论格式如何,上述地址都将返回相同的数字。然后在这些索引上进行匹配


例如,在英国,每个国家的邮政地址都有所谓的UDPRN号码。

请尽量不要将类似问题分散到多个问题上。参考你之前的问题。这很有趣,这两个都是英国地址集,但不包括UPRN。一个是土地注册数据,另一个是能源绩效数据。我是一个在构建环境中的研究生,所以不是一个开发人员或程序员。所以我应该尝试使用索引将字符串转换为一个数字,然后匹配该数字?我读到的一个问题是,ASCII给出了
a
a
不同的值,这不会给我带来问题吗?看看udprn和PAF。这些将为您索引您的地址。它们将考虑格式和布局等方面的差异,并返回匹配的键。匹配地址是一件痛苦的事情,这是一个很好的方法。有些选项的费用低于100英镑,这取决于你从谁那里购买。谢谢你的提示,我需要整个英格兰和威尔士。我有OS AddressBase Plus集,但我遇到的问题是土地注册处reocrd地址的唯一方式不同于PAF,并且它们不附加UPRN