الاسم
debug_standardize_address — تُعيد نصًا بتنسيق json يسرد رموز التحليل وعمليات التوحيد
المختصر
text debug_standardize_address(text lextab, text gaztab, text rultab, text micro, text macro=NULL);
الوصف
هذه دالة لتصحيح أخطاء قواعد مُوحِّد العناوين وربطيات lex/gaz. تُعيد نصًا بتنسيق json يتضمن القواعد المطابقة، وربط الرموز، وأفضل صيغة عنوان موحَّد stdaddr لعنوان مُدخل، باستخدام اسم جدول lex table وأسماء جداول gaz table وrules table وعنوان.
للعناوين أحادية السطر استخدم micro فقط
للعنوان ثنائي السطر: micro يتكون من السطر الأول القياسي للعنوان البريدي، مثل house_num street، وmacro يتكون من السطر الثاني القياسي للعنوان البريدي، مثل city, state postal_code country.
العناصر المُعادة في مستند json هي
-
input_tokens -
لكل كلمة في العنوان المُدخل، تُعيد موضع الكلمة، وتصنيف رمزها، والكلمة القياسية المربوطة بها. لاحظ أنك قد تحصل لبعض الكلمات المُدخلة على عدة سجلات، لأن بعض المُدخلات يمكن تصنيفها بأكثر من تصنيف.
-
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: عنوان أحادي السطر مع إعادة رموز الإدخال
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)
انظر أيضًا
stdaddr، rules table، lex table، gaz table، Pagc_Normalize_Address