用边界情况而不只是理想路径来测试位置数据
一个位于地图完善的市中心的地址,几乎无法告诉您系统如何处理乡村路线、有争议的边界或靠近两极的查询。请有意识地测试这些困难情况。
地理编码响应中的大部分工作由两个字段完成,它们回答的是不同的问题。precision 描述找到的是哪种匹配:门牌、街道、邮政编码或城市。confidence 是一个介于 0 和 1 之间的数字,描述在给定输入和可用数据的情况下,匹配有多确定。一个结果可以是高精度、低置信度,也可以是低精度、高置信度,两者都是有效的结果,值得分别处理。
举个例子。查询一个带单元号的完整街道地址,可能在 house 精度上得到解析,但置信度只有 0.6,因为输入的街道名称有拼写错误,地理编码器不得不猜测原本指的是哪条街。而只查询一个城市名称,可能在 city 精度上得到解析,置信度为 0.98,因为只有一个合理的匹配,完全没有歧义。如果您的代码只检查精度,就会把第二个安全得多的结果当作更差的结果,而实际上,就它所声称的内容而言,它才是更可靠的那个。
实用的规则是同时按两者筛选,而不是用一个替代另一个。如果您的场景需要屋顶级精度,例如派送包裹,就要求 precision 为 house,并且 confidence 高于您根据测试设定的阈值。如果您只需要知道订单发往哪个城市,那么高置信度的 city 精度完全可用,仅仅因为它不是 house 精度就拒绝它,等于丢弃了有用的数据。
把 type 当作上下文而不是单独的筛选条件,也会有所帮助。type 为 address、同时 precision 为 street,说明输入看起来像一个完整地址,但只匹配到了街道级别,这是一个有用的信号,表明地址本身可能不完整或有拼写错误,而不是地理编码器存在数据空缺。
不同服务商的置信度数值不能直接比较,因为这个数字的计算方式没有统一标准。请把这个刻度看作某一服务商自身响应之间的相对值,而不是正确性的绝对概率。运行您自己的一组有代表性的查询,观察在您自己的数据中,好的匹配和差的匹配的置信度通常分别落在哪里,并据此选择您的截止值,而不是采用一个在文档里看起来合理的数字。