Name

debug_standardize_address — Retourne une chaîne au format json avec les jetons d'entrée et les normalisations

Synopsis

text debug_standardize_address(text lextab, text gaztab, text rultab, text micro, text macro=NULL);

Description

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

input_tokens

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.

rules

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

stdaddr

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.

Exemples

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)