debug_standardize_address — Retourne une chaîne au format json avec les jetons d'entrée et les normalisations
text debug_standardize_address(
text lextab, text gaztab, text rultab, text micro, text macro=NULL)
;
Ceci est une fonction pour déboguer les règles de normalisation des adresses et les correspondances lex/gaz. Cette fonction retourne une chaîne au format json qui inclut les règles correspondantes, la correspondance des jetons d'entrées et la meilleure adresse normalisée selon stdaddr, en utilisant les tables lex table, gaz table et rules table, ainsi qu'une adresse.
Pour une adresse sur une seule ligne, utiliser micro
Pour une adresse sur deux lignes, utiliser micro
pour la première ligne standard d'une adresse postale par exemple house_num street
, et macro pour la deuxième ligne postale standard de l'adresse, par exemple city, state postal_code country
.
Les éléments retournées dans le document json sont
Pour chaque mot de l'adresse d'entrée, retourne la position du mot, la catégorisation du jeton correspondant au mot, et le mot standard correspondant. A noter que pour certains mots d'entrée, vous pouvez obtenir plusieurs enregistrements car certaines entrées peuvent correspondre à plusieurs catégories à la fois.
L'ensemble des règles correspondant à l'entrée, et le score de correspondance pour chacune. La première règle (avec le plus haut score) est celle utilisée pour la normalisation
Les éléments de l'adresse normalisée stdaddr, qui seraient retournés par standardize_address
Disponibilité : 3.4.0
Cette méthode nécessite l'extension address_standardizer.
Utilisation de l'extension address_standardizer_data_us
CREATE EXTENSION address_standardizer_data_us; -- only needs to be done once
Variante 1 : prend une adresse sur une seule ligne et retourne les jetons d'entrée
SELECT it-> >'pos' AS position, it-> >'word' AS word, it-> >'stdword' AS standardized_word, it-> >'token' AS token, it-> >'token-code' AS token_code FROM jsonb( debug_standardize_address('us_lex', 'us_gaz', 'us_rules', 'One Devonshire Place, PH 301, Boston, MA 02109') ) AS s, jsonb_array_elements(s->'input_tokens') AS it;
position | word | standardized_word | token | token_code ----------+------------+-------------------+--------+------------ 0 | ONE | 1 | NUMBER | 0 0 | ONE | 1 | WORD | 1 1 | DEVONSHIRE | DEVONSHIRE | WORD | 1 2 | PLACE | PLACE | TYPE | 2 3 | PH | PATH | TYPE | 2 3 | PH | PENTHOUSE | UNITT | 17 4 | 301 | 301 | NUMBER | 0 (7 rows)
Variante 2 : Adresse en deux parties et retourne la première règle de correspondance et son score
SELECT (s->'rules'->0-> >'score')::numeric AS score, it-> >'pos' AS position, it-> >'input-word' AS word, it-> >'input-token' AS input_token, it-> >'mapped-word' AS standardized_word, it-> >'output-token' AS output_token FROM jsonb( debug_standardize_address('us_lex', 'us_gaz', 'us_rules', 'One Devonshire Place, PH 301', 'Boston, MA 02109') ) AS s, jsonb_array_elements(s->'rules'->0->'rule_tokens') AS it;
score | position | word | input_token | standardized_word | output_token ----------+----------+------------+-------------+-------------------+-------------- 0.876250 | 0 | ONE | NUMBER | 1 | HOUSE 0.876250 | 1 | DEVONSHIRE | WORD | DEVONSHIRE | STREET 0.876250 | 2 | PLACE | TYPE | PLACE | SUFTYP 0.876250 | 3 | PH | UNITT | PENTHOUSE | UNITT 0.876250 | 4 | 301 | NUMBER | 301 | UNITT (5 rows)