From 576b575b13067fcd3a755c09343dbb65834db86f Mon Sep 17 00:00:00 2001 From: Regina Obe Date: Tue, 29 Nov 2011 08:49:06 +0000 Subject: [PATCH] Fix for #1310 git-svn-id: http://svn.osgeo.org/postgis/trunk@8252 b70326c6-7e19-0410-871a-916f4a2858ee --- .../tiger_2010/normalize/normalize_address.sql | 6 ++++-- .../tiger_2010/regress/normalize_address_regress | 3 ++- .../tiger_2010/regress/normalize_address_regress.sql | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/extras/tiger_geocoder/tiger_2010/normalize/normalize_address.sql b/extras/tiger_geocoder/tiger_2010/normalize/normalize_address.sql index accccb791..2fb8f1299 100644 --- a/extras/tiger_geocoder/tiger_2010/normalize/normalize_address.sql +++ b/extras/tiger_geocoder/tiger_2010/normalize/normalize_address.sql @@ -484,14 +484,16 @@ BEGIN RAISE NOTICE '% postDir exact match: %', clock_timestamp(), result.postDirAbbrev; END IF; ELSE - -- postDirection is not equal location, but may be contained in it. + -- postDirection is not equal location, but may be contained in it + -- It is only considered a postDirection if it is not preceded by a , SELECT INTO tempString substring(result.location, '(?i)(^' || name || ')' || ws) FROM direction_lookup WHERE result.location ILIKE '%' || name || '%' AND texticregexeq(result.location, '(?i)(^' || name || ')' || ws) + AND NOT texticregexeq(rawInput, '(?i)(,' || ws || '+' || result.location || ')' || ws) ORDER BY length(name) desc LIMIT 1; IF debug_flag THEN - RAISE NOTICE '% location trying to extract postdir: %', clock_timestamp(), result.location; + RAISE NOTICE '% location trying to extract postdir: %, tempstring: %, rawInput: %', clock_timestamp(), result.location, tempString, rawInput; END IF; IF tempString IS NOT NULL THEN postDir := tempString; diff --git a/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress b/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress index cfb4a94cf..4c8430db6 100644 --- a/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress +++ b/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress @@ -38,4 +38,5 @@ #1125c|19799 State Rte O, COSBY, MO 64436|19799||O|State Rte|||COSBY|MO|64436|t #1125d|I- 90, Boston, MA|||90|I-|||Boston|MA||t #1125e|I-90, Boston, MA|||I-90||||Boston|MA||t -#1125f|I- 90, Boston, MA|||90|I-|||Boston|MA||t \ No newline at end of file +#1125f|I- 90, Boston, MA|||90|I-|||Boston|MA||t +#1310a|1110 W CAPITOL Ave, WEST SACRAMENTO, CA|1110|W|CAPITOL|Ave|||WEST SACRAMENTO|CA||t \ No newline at end of file diff --git a/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress.sql b/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress.sql index c19f750f1..e440f3540 100644 --- a/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress.sql +++ b/extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress.sql @@ -85,4 +85,7 @@ SELECT '#1125d' As ticket, pprint_addy(addy), addy.* FROM normalize_address('Int -- this one is wrong (because the lack of space trips it up) but will fix later SELECT '#1125e' As ticket, pprint_addy(addy), addy.* FROM normalize_address('I-90,Boston, MA') As addy; SELECT '#1125f' As ticket, pprint_addy(addy), addy.* FROM normalize_address('I 90,Boston, MA') As addy; + +-- location with prefixes getting caught in post prefix +SELECT '#1310a' As ticket, pprint_addy(addy), addy.* FROM normalize_address('1110 W CAPITOL AVE, WEST SACRAMENTO, CA') As addy; \timing -- 2.40.0