Name

debug_standardize_address — Gibt einen json-formatierten Text zurück, der die Parse-Token und Standardisierungen auflistet

Synopsis

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

Beschreibung

Dies ist eine Funktion zum Debuggen von Adressstandardisierungsregeln und lex/gaz-Zuordnungen. Sie gibt einen json-formatierten Text zurück, der die Abgleichsregeln, die Zuordnung von Token und die beste standardisierte Adresse stdaddr Form einer Eingabeadresse unter Verwendung von lex table Tabellenname, gaz table und rules table Tabellennamen und einer Adresse enthält.

Für einzeilige Adressen verwenden Sie einfach micro

Für eine zweizeilige Adresse A micro bestehend aus der ersten Zeile einer Standard-Postanschrift, z. B. house_num street, und einem Makro bestehend aus der zweiten Zeile einer Standard-Postanschrift, z. B. city, state postal_code country.

Die im json-Dokument zurückgegebenen Elemente sind

input_tokens

Gibt für jedes Wort in der Eingabeadresse die Position des Wortes, die Token-Kategorisierung des Wortes und das Standardwort, dem es zugeordnet ist, zurück. Beachten Sie, dass Sie für einige Eingabewörter möglicherweise mehrere Datensätze zurückerhalten, da einige Eingaben als mehr als eine Sache kategorisiert werden können.

rules

Die Menge der Regeln, die der Eingabe entsprechen, und die entsprechende Punktzahl für jede Regel. Die erste Regel (mit der höchsten Punktzahl) wird für die Standardisierung verwendet

stdaddr

Die standardisierten Adresselemente stdaddr, die bei der Ausführung von standardize_address

Verfügbarkeit: 3.4.0

Diese Methode benötigt die Erweiterung address_standardizer.

Beispiele

Verwendung der address_standardizer_data_us Erweiterung

CREATE EXTENSION address_standardizer_data_us; -- only needs to be done once

Variante 1: Einzeilige Adresse und Rückgabe der Eingabe-Token

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: Mehrzeilige Adresse und Rückgabe der ersten Regeleingabe-Mappings und der Punktzahl

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)