目标
地址验证功能可为各种使用情形提供价值,除了测试结果的原始质量之外,还有一些关键注意事项,建议您加以了解。例如:在用户流程(如地点自动补全和 Google 地图)中全面了解兼容产品、区域可用性以及企业信任度和可靠性。
在评估地址验证 API 时,我们建议您在测试过程中遵循以下准则。
此测试的目标是:
- 确认 Address Validation API 适合您的使用情形。
 - 验证 Address Validation API 是否满足您的解决方案要求,例如:
- 确定优质地址。
 - 提醒您解决输入源质量不佳的问题。
 - 对地址数据进行更正,包括推理、替换和拼写更正。
 - 提供格式化的配送地址。
 - 针对子地址数据缺失或不正确发出提醒(仅限美国)。
 
 - 确保实施该 API 会带来可衡量的益处。
 
执行测试后,您将能够回答上述问题,并确定该 API 是否适合您的业务。
准备数据
您应针对现有地址数据样本执行测试。不要手动挑选测试数据,而是选择能代表您开展业务的地理位置的随机样本。这意味着,如果您在美国和英国都有业务,但 70% 的业务是在英国开展的,只有 30% 的业务是在美国开展的,那么样本应反映这种比例。
使用捕获时的地址。例如,如果您计划在电子商务结账流程中实现地址验证,请使用客户在表单中输入的地址,而不要使用任何可能被实现地址验证 API 所取代的现有处理流程。
准备大约 5,000-10,000 条记录的样本量以进行测试。
调用该 API
本部分的前提条件:了解如何 发送地址验证请求。
准备好数据后,您需要针对 API 运行每个地址记录。
如需有关如何调用该 API 的指南,请参阅 Address Validation API 文档。我们还提供了一篇文章,介绍了使用 Address Validation API 处理大量地址的最佳实践。
此步骤的输出应该是 API 针对每个地址记录输出的数据。然后,您就可以分析结果,确定该 API 是否适合您的使用情形。您可以使用电子表格、数据库或其他工具。
查看结果
本部分的前提条件:了解如何 处理验证响应,尤其是“修复”“确认”和“接受”的概念。
在本部分中,我们将讨论您可能需要分析的输出方案,以评估解决方案的适用性。
本文档中讨论的关键 API 字段概览
回答数据  | 
    这是什么?  | 
    如何评估  | 
    有何帮助?  | 
  
|---|---|---|---|
verdict.inputGranularity  | 
    描述地址的输入粒度。  | 
    SUB_PREMISE PREMISE PREMISE_PROXIMITY 屏蔽 ROUTE 其他  | 
    用于确定输入地址是否具有足够的数据,从而可能有效。  | 
  
verdict.validationGranularity  | 
    描述地址的整体输出验证。  | 
    SUB_PREMISE PREMISE PREMISE_PROXIMITY 屏蔽 ROUTE 其他  | 
    用于确定 API 输出中的总体地址质量。  | 
  
verdict.hasInferredComponents  | 
    指示 API 是否已推断出组件。  | 
    True/False  | 
    该 API 能够添加可推断出数据的缺失组件。例如,缺少州代码。  | 
  
verdict.hasReplacedComponents  | 
    指示 API 是否已替换组件。  | 
    True/False  | 
    在某些情况下,该 API 能够使用正确的数据替换不正确的组件。  | 
  
verdict.addressComplete  | 
    指示地址是否完整。  | 
    True/False  | 
    如果 API 确定输出地址包含所有必需的组成部分,则为 true。  | 
  
address.missingComponentTypes  | 
    用于发出信号,在地址缺少组成部分时发出警告。  | 
    请参阅 表 2 了解相应的值。  | 
    突出显示不完整地址中缺失的组成部分。  | 
  
查看有效地址
对 API 返回的数据进行排序,以确定您的系统会接受哪些地址作为有效地址。需要从 API 中查找的关键信号包括:
verdict.validationGranularity包含PREMISE或更高级别的。verdict.addressComplete为true。- 无推断或替换的组件。
 
如需了解详情,请参阅接受地址。
此练习的输出应为地址数据的一个子集,该子集中的地址数据会被您的系统视为有效。此时,您可以确定以下内容:
- 接受百分比是否可接受?
 - 如果您使用现有的地址验证工作流,接受率是否相当或更高?
 
示例:有效地址
输入的地址  | 
    区域  | 
  
|---|---|
76 Buckingham Palace Road, London SW1W 9TQ  | 
    英国  | 
  
判定
{
  "inputGranularity": "PREMISE",
  "validationGranularity": "PREMISE",
  "geocodeGranularity": "PREMISE",
  "addressComplete": true
}
查看无效地址
此步骤可让您手动检查一些被标记为无效的地址数据,并查看在不使用 Address Validation API 的情况下,这些无效地址是否会导致下游问题。
对从 API 返回的数据进行排序,以确定您的系统会标记为无效的地址集。需要从 API 中查找的关键信号包括:
verdict.validationGranularity设置为OTHER或ROUTE,具体取决于您的风险级别。verdict.addressComplete为false。
如需了解详情,请参阅更正地址。
此练习的输出应为地址数据的一个子集,该子集会被您的系统标记为无效。此时,您可以确定无效百分比是否可接受。
请务必注意,将地址标记为无效是 Address Validation API 的核心功能,而将地址标记为无效的比例较高并不一定意味着该 API 的效果不佳。该 API 会告知您地址存在问题,从而让您能够更早地发现错误,避免下游出现问题,提高工作效率。
示例:地址无效
输入的地址  | 
    区域  | 
  
|---|---|
21 45 40th street  | 
    USA  | 
  
判定
{
  "inputGranularity": "PREMISE",
  "validationGranularity": "OTHER",
  "geocodeGranularity": "OTHER",
  "hasUnconfirmedComponents": true
}
查看缺失或未确认的组件
在此阶段,您还可以查看缺失或未确认的组件。这是返回结果中 Address 对象的一部分。这两个字段分别是 missingComponentTypes 和 unconfirmedComponentTypes。
您可以使用这些字段来帮助检测 API 将地址标记为无效的原因,并通过将不正确的特定字段反馈给数据收集点,收集正确的地址信息,从而使地址有效。这是 API 通过提供有关数据质量的具体信息来体现价值的一种方式。
示例:缺少且未确认的组件
输入的地址  | 
    区域  | 
  
|---|---|
Fake St, New York, NY 10011  | 
    USA  | 
  
判定
{
     "inputGranularity": "ROUTE",
     "validationGranularity": "OTHER",
     "geocodeGranularity": "OTHER",
     "hasUnconfirmedComponents": true
}
缺少和未确认的组件
"missingComponentTypes": [
    "street_number"
],
"unconfirmedComponentTypes": [
    "route"
]
查看已修正的地址
Address Validation API 能够更正输入数据,将可能无效的地址输入转换为有效的地址数据。这是 API 增加价值的一种方式,在测试中务必要考虑到这一点。
需要注意的关键信号包括:
inferred、replaced或spellCorrected在任何addressComponents上设置为true。verdict.hasInferredComponents,或将verdict.hasReplacedComponents设置为true。
如需了解详情,请参阅确认地址。
本练习的输出应为已通过 API 应用更正的地址数据子集。
您可以手动查看部分此类数据,以确定该 API 是否正在对您的数据进行修正,从而减少下游工作流程中的摩擦。
示例:包含更正的地址
输入的地址  | 
    区域  | 
  
|---|---|
76 Bruckingm Palace Road, London SW1W 9TQ  | 
    英国  | 
  
路线 addressComponent
{
    "componentName": {
        "text": "Buckingham Palace Road",
        "languageCode": "en"
    },
    "componentType": "route",
    "confirmationLevel": "CONFIRMED",
    "spellCorrected": true
}
[仅限美国] 查看缺少或包含不正确子地址数据的地址
对于美国地址,Address Validation API 能够确定子地址是缺失还是不正确。
需要注意的关键信号包括:
- 在 Address 对象中:
- “
unconfirmedComponentTypes”包含“subpremise” - “
missingComponentTypes”包含“subpremise” 
 - “
 - 在 UspsData 对象中:
dpvConfirmation为D(缺少子前提)dpvConfirmation为S(次前提未确认)
 
如需了解详情,请参阅处理美国地址。
此测试将显示您的数据中是否存在缺少或不正确的子场所(例如公寓号码)问题。这可能会导致下游问题,尤其是在配送用例中。地址验证 API 可在工作流程中更早地识别出此类问题,从而帮助您采取相应步骤来收集更正后的数据,进而提升工作流程的价值。
示例:缺少子前提
输入的地址  | 
    区域  | 
  
|---|---|
111 8th Avenue, Manhattan, NY 10011  | 
    美国  | 
  
缺少组件
"missingComponentTypes": [
    "subpremise"
]
美国邮政服务 (USPS) 数据 DPV 确认
"dpvConfirmation": "D"
[仅限美国] 查看 USPS 标准化地址
对于美国地址,Address Validation API 还会返回 USPS 标准化地址。如果您需要在配送标签上打印 USPS 格式的地址,这一点尤为重要。
您可以查看 UspsAddress,了解这些数据,并确定它们是否能为您的工作流带来价值。
示例:USPS 标准化地址
"standardizedAddress": {
    "firstAddressLine": "111 8TH AVE FL 11",
    "cityStateZipAddressLine": "NEW YORK NY 10011-5201",
    "city": "NEW YORK",
    "state": "NY",
    "zipCode": "10011",
    "zipCodeExtension": "5201"
}
总结
立即开始测试 - 立即开始测试 Address Validation API,确保地址数据的准确性,提升客户体验,并简化业务运营。按照上述测试方案进行测试后,您将获得所需的信息,从而确定地址验证 API 是否能为您的工作流程带来价值。
建议的延伸阅读内容:
贡献者
Henrik Valve | DevX 工程师