]> granicus.if.org Git - postgis/commitdiff
Partial fix for #1108
authorRegina Obe <lr@pcorp.us>
Tue, 12 Jul 2011 13:03:16 +0000 (13:03 +0000)
committerRegina Obe <lr@pcorp.us>
Tue, 12 Jul 2011 13:03:16 +0000 (13:03 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7631 b70326c6-7e19-0410-871a-916f4a2858ee

extras/tiger_geocoder/tiger_2010/normalize/normalize_address.sql
extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress
extras/tiger_geocoder/tiger_2010/regress/normalize_address_regress.sql

index d7f5906670260481f19a5e94808c8cc3da1b636a..f72b56361b973f420e55cbdfa0f56b9ddd5bc248 100644 (file)
@@ -377,7 +377,7 @@ BEGIN
         IF debug_flag THEN
                RAISE NOTICE 'reduced Street: %', result.streetName;
         END IF;
-        -- the post direction might be portion of fullStreet after reducedStreet
+        -- the post direction might be portion of fullStreet after reducedStreet and type
                -- reducedStreet: 24  fullStreet: Country Road 24, N or fullStreet: Country Road 24 N
                tempString := regexp_replace(fullStreet, streetType || ws || '+' || reducedStreet,'');
                IF tempString > '' THEN
@@ -412,7 +412,7 @@ BEGIN
           END IF;
           reducedStreet := substring(fullStreet, '^(.*)' || ws || '+'
                         || streetType);
-          IF COALESCE(reducedStreet,'') = '' THEN --reduced street can't be blank
+          IF COALESCE(trim(reducedStreet),'') = '' THEN --reduced street can't be blank
             reducedStreet := fullStreet;
             streetType := NULL;
             result.streetTypeAbbrev := NULL;
@@ -423,7 +423,8 @@ BEGIN
                tempString := trim(regexp_replace(fullStreet,  reducedStreet ||  ws || '+' || streetType,''));
                IF tempString > '' THEN
                  tempString := abbrev FROM direction_lookup WHERE
-                        tempString ILIKE '%' || name || '%'  AND texticregexeq(reducedStreet || ws || '+' || streetType, '(?i)(' || name || ')' || ws || '+|$')
+                        tempString ILIKE '%' || name || '%'  
+                        AND texticregexeq(fullStreet || ' ', '(?i)' || reducedStreet || ws || '+' || streetType || ws || '+(' || name || ')' || ws || '+')
                        ORDER BY length(name) DESC LIMIT 1;
                  IF tempString IS NOT NULL THEN
                        result.postDirAbbrev = trim(tempString);
index 4511f1ee38e87789818f10dae199c04c54527811..93c1d77f18dbbbb96df1432d4335569bb7e89aa3 100644 (file)
@@ -9,6 +9,7 @@
 529||Main|St||Apt 201|Boston|MA|02129|t
 529||Main|St||Apt 201|Boston|MA|02129|t
 529||Main|St||Apt 201|Boston|MA||t
+#1108a|529||Main|St||Suite 201|Boston|MA|02129|t
 #1073a|212||3rd|Ave|N||MINNEAPOLIS|MN|553404|t
 #1073b|212||3rd|Ave|N||MINNEAPOLIS|MN|55401|t
 #1073c|529||Main|St|||Boston|MA|021|t
index af0e3bf7405bf92318729162c6f60130b365cae3..9f0fa4dde1b16cb41dc4540a3d6d5e19aef1f66a 100644 (file)
@@ -20,7 +20,7 @@ SELECT * FROM normalize_address('529 Main Street Apt 201, Boston, MA 02129');
 SELECT * FROM normalize_address('529 Main Street, Apt 201, Boston, MA');
 
 --This one fails so lead out for now
---SELECT * FROM normalize_address('529 Main Street, Suite 201, Boston, MA 02129');
+SELECT '#1108a' As ticket, * FROM normalize_address('529 Main Street, Suite 201, Boston, MA 02129');
 
 -- Partial and Mangled zipcodes
 SELECT '#1073a' As ticket, * FROM normalize_address('212 3rd Ave N, MINNEAPOLIS, MN 553404');