Skip to content

Commit

Permalink
Guarantee order of us_lex items
Browse files Browse the repository at this point in the history
References #5695 for PostGIS 3.5.0
  • Loading branch information
robe2 committed Mar 15, 2024
1 parent ddae34d commit 990c57c
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ SELECT '#5299b' AS ticket, jsonb_array_length(d->'rules') AS num_rules, jsonb_ar
(1 row)

SELECT '#5299bt' AS ticket, it->>'pos' AS pos, it->>'word' AS word, it->>'token' AS token, it->>'stdword' AS stdword FROM jsonb(debug_standardize_address('us_lex', 'us_gaz', 'us_rules','50 Gold Piece Drive, Boston, MA, 02020')) AS d, jsonb_array_elements(d->'input_tokens') AS it
WHERE it @> '{"pos": 2}'::jsonb;
WHERE it @> '{"pos": 2}'::jsonb
ORDER BY pos, stdword, word, token;
ticket | pos | word | token | stdword
---------+-----+-------+-------+---------
#5299bt | 2 | PIECE | UNITH | PIECE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,9 @@ SELECT '#5299b' AS ticket, * FROM standardize_address('us_lex', 'us_gaz', 'us_r
#5299b | | 50 | | | | GOLD PIECE | DRIVE | | | | BOSTON | MASSACHUSETTS | | 02020 | |
(1 row)

SELECT '#5695a' AS ticket, * FROM standardize_address('us_lex', 'us_gaz', 'us_rules', 'ONE E PIMA ST STE 999, TUCSON, AZ');
ticket | building | house_num | predir | qual | pretype | name | suftype | sufdir | ruralroute | extra | city | state | country | postcode | box | unit
--------+----------+-----------+--------+------+---------+------+---------+--------+------------+-------+--------+---------+---------+----------+-----+-----------
#5695a | | 1 | EAST | | | PIMA | STREET | | | | TUCSON | ARIZONA | USA | | | SUITE 999
(1 row)

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ SELECT '#2978c' As ticket, jsonb_array_length(d->'rules') AS num_rules, jsonb_ar
SELECT '#5299b' AS ticket, jsonb_array_length(d->'rules') AS num_rules, jsonb_array_length(d->'input_tokens') AS num_input_tokens, d->'rules'->0->'score' AS best_score FROM jsonb(debug_standardize_address('us_lex', 'us_gaz', 'us_rules','50 Gold Piece Drive, Boston, MA, 02020')) AS d;

SELECT '#5299bt' AS ticket, it->>'pos' AS pos, it->>'word' AS word, it->>'token' AS token, it->>'stdword' AS stdword FROM jsonb(debug_standardize_address('us_lex', 'us_gaz', 'us_rules','50 Gold Piece Drive, Boston, MA, 02020')) AS d, jsonb_array_elements(d->'input_tokens') AS it
WHERE it @> '{"pos": 2}'::jsonb;
WHERE it @> '{"pos": 2}'::jsonb
ORDER BY pos, stdword, word, token;

SELECT r->>'score' AS score,r->>'rule_string' AS rule, r->>'rule_stub_string' AS rule_stub FROM jsonb(debug_standardize_address('us_lex','us_gaz','us_rules', '25 Prince Street, NC 09985')) AS d, jsonb_array_elements(d->'rules') AS r;
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ SELECT '#2978b' As ticket, * FROM standardize_address('us_lex','us_gaz','us_rule
SELECT '#2978c' As ticket, * FROM standardize_address('us_lex','us_gaz','us_rules', '10-20 DORRANCE ST, PROVIDENCE, RI');
SELECT '#5299a' AS ticket, * FROM standardize_address('us_lex', 'us_gaz', 'us_rules','1 Timepiece Point','Boston, MA, 02220');
SELECT '#5299b' AS ticket, * FROM standardize_address('us_lex', 'us_gaz', 'us_rules','50 Gold Piece Drive','Boston, MA, 02020');
SELECT '#5695a' AS ticket, * FROM standardize_address('us_lex', 'us_gaz', 'us_rules', 'ONE E PIMA ST STE 999, TUCSON, AZ');
3 changes: 2 additions & 1 deletion extensions/address_standardizer/us_lex.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2955,7 +2955,8 @@ WITH t(seq,word,stdword,token) AS ( VALUES (1, '#', '#', 16),
(1, 'ZNJA', 'ZANJA', 1) )
SELECT seq, word, stdword, token
FROM t
WHERE NOT EXISTS(SELECT 1 FROM us_lex AS t2 WHERE t2.seq = t.seq AND t2.word = t.word AND t2.stdword = t.stdword AND t2.token = t.token );
WHERE NOT EXISTS(SELECT 1 FROM us_lex AS t2 WHERE t2.seq = t.seq AND t2.word = t.word AND t2.stdword = t.stdword AND t2.token = t.token )
ORDER BY word, seq, token, stdword;

-- needed set default back to original
ALTER TABLE us_lex ALTER COLUMN is_custom SET DEFAULT true;

0 comments on commit 990c57c

Please sign in to comment.