名稱

debug_standardize_address — 傳回 JSON 格式的文字,列出剖析的 token 和標準化結果

概要

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

描述

此函式用於除錯地址標準化規則和 lex/gaz 對應。它會傳回 JSON 格式的文字,其中包含相符的規則、token 的對應以及使用lex table表名稱、gaz tablerules table表名稱以及地址的輸入地址的最佳標準化stdaddr形式。

對於單行地址,僅使用 micro

對於雙行地址,micro包含標準的郵政地址第一行,例如 門牌號碼 街道,而 macro 包含標準的郵政地址第二行,例如 城市, 州 郵遞區號 國家

JSON 文件中傳回的元素為

input_tokens

針對輸入地址中的每個單字,傳回單字的位置、單字的 token 分類以及它對應的標準單字。請注意,對於某些輸入單字,您可能會收到多個記錄,因為某些輸入可以被分類為多種事物。

rules

符合輸入的規則集以及每個規則的對應分數。第一個規則(得分最高)是用於標準化的規則

stdaddr

標準化地址元素 stdaddr,當執行 standardize_address 時會傳回

可用性: 3.4.0

此方法需要 address_standardizer 擴充功能。

範例

使用 address_standardizer_data_us 擴充功能

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

範例 1:單行地址並傳回輸入的 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)

範例 2:多行地址並傳回第一個規則的輸入對應和分數

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)