2017-06-17 186 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 –