2017-06-17 201 views
0

我想做什么;PostgresSQL:使用来自两个表格的模糊匹配的地址匹配

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

我试过了;

我已经创建和索引的列和表如下;

CREATE INDEX idx_table1_fulladdress ON table1 (LOWER(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 

的地址不一致格式化table要么即表中不是所有的地址包括城市,所以我不能使用regextrim批量干净。

我已经在postgres中看到了fuzzystrmatchmodule,这听起来像它可能会解决我的问题。

问题 其中探测法,莱文斯坦的,音位是最合适的。大多数记录都是英文的,一些地名是Gaelic在9.6上运行的。感谢任何帮助

+0

请尽量不要在多个问题上传播类似问题。参考你以前的问题。 https://stackoverflow.com/questions/44587680/postgres-db-performance-for-split-vs-concatenate-when-matching – Mokadillion

回答

0

从不同来源的匹配地址的经验谈谈。你可以做的是索引每个地址。无论格式如何,上述地址都会返回相同的数字。然后你匹配这些索引。

例如,在英国,您可以在该国的每个邮政地址中使用UDPRN号码。

+0

这是非常有趣的,这些都是英国地址集,但不包括UPRN。一个是土地登记数据和其他能源绩效数据。我是建筑环境的研究生,所以不是开发商或程序员。所以我应该尝试的是将字符串转换为数字,然后使用和索引匹配该数字?我在读这个问题时,ASCII给出了'a'和'A'的不同值,会不会引起我的问​​题? –

+0

看着udprn和PAF。这些将为您的地址编制索引。他们会考虑格式和布局等方面的差异,并返回一个匹配的关键。匹配地址是一个痛苦,这是一个很好的方法。取决于您的购买对象,某些选项的成本不到100英镑。 – Mokadillion

+0

感谢您的提示,我需要整个英格兰和威尔士。我有OS AddressBase Plus设置,但我遇到的问题是Land注册表reocrd地址以不同于PAF的独特方式,并且它们不附加UPRN –