我在两个单独的表中有一个地址列表,略微偏离我需要能够匹配.例如,可以通过多种方式输入相同的地址:
虽然简单,但您可以想象更复杂的场景中的情况.我正在尝试开发一种能够将上述地址作为关键字匹配的简单算法.
例如.关键可能是"11TEST" - 110的前两个,测试的前两个和街道变体的前两个.完整匹配键也将包括前5个邮政编码,因此在上面的示例中,完整键可能看起来像"11TEST44680".
我正在寻找有效算法或资源的想法,我可以在开发时考虑这些因素.任何想法都可以是伪代码或您选择的语言.
我们只关心美国的地址.事实上,我们只查看来自俄亥俄州和密歇根州的250个邮政编码的地址.我们也无法访问任何邮政软件,尽管对于具有成本效益的解决方案的想法是开放的(它基本上是一次性使用).请注意,这是来自政府来源的初始数据转储,因此有关用户如何清理它的建议对我构建应用程序很有帮助,但我希望能够将地址匹配为最佳状态.尽可能好.
在我的应用程序中,我必须使用用户地址(美国).用户需要输入有效地址.我怎样才能做到这一点?是否有任何图书馆可以帮助我了解州,城市和街道名称的名称?如果可能的话我想使用autotype.我读过GeoCoding,但我认为它不会对我有帮助,因为用户没有从当前位置输入地址.
有没有办法以编程方式确定美国给定的实际街道地址与哪个学区相关联?
我可以获得调用 SmartyStreets LiveAddress API 进行地址验证的示例 PHP 代码示例吗?
我有一个HTML表单,其中包含部分输入送货地址(街道地址,城市,州/省,邮政编码和国家/地区).然后使用PHP处理此表单.
我想将此地址转换为目标国家/地区的正确格式.我可以使用任何库或外部服务在PHP中进行此转换吗?如果没有,我可以使用Perl或类似的语言吗?
我正在考虑使用正则表达式来限制城市名称(全球)中的标点符号。什么是具有相当包容性的白名单?
我在想:
(space)
. period
- hyphen
' apostrophe
Run Code Online (Sandbox Code Playgroud)
也在想逗号或斜线,但我没有任何例子。还有其他人吗?
当用户将公寓号添加到他们的地址时,自动填充似乎认为它正在查看邮政编码,并更改建议的匹配:
6250 Hollywood Boulevard#20
有没有办法让这个工作,或者如果没有,一种方法来忽略公寓号码并将其与表单提交一起作为单独的值发送?(请记住,用户可能会使用#,Unit,Apt等来定义其单位编号)
var placeSearch, autocomplete;
var componentForm = {
street_number: 'short_name',
route: 'short_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
function initialize(){
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete-address')),
{ types: ['geocode'] });
google.maps.event.addListener(autocomplete, 'place_changed', function(){
fillInAddress();
}
);
}
function fillInAddress(){
var place = autocomplete.getPlace();
for(var component in componentForm){
document.getElementById(component).value = '';
document.getElementById(component).disabled = false;
}
for(var i = 0; i < place.address_components.length; i++){
var addressType = place.address_components[i].types[0];
if(componentForm[addressType]){
var val = place.address_components[i][componentForm[addressType]];
document.getElementById(addressType).value = val; …Run Code Online (Sandbox Code Playgroud) 我想知道什么是验证美国地址的好方法,我知道可能没有正确的方法来做到这一点,但我会采用基本的方式:#,街道名称,城市,州和邮政编码.
任何想法都会欣赏它.谢谢
我正在尝试为豪华轿车公司建立数据库,但我对与客户,司机,关联公司和订单相关的地址应该做多少标准化工作感到困惑。
会员和司机的地址基本上是这样的:address_line_1,address_line_2,城市,州,邮政编码,国家/地区
我的问题来自订单和客户地址。它们应如下所示:address_line_1,address_line_2,城市,州,邮政编码,国家/地区,address_type_1(家庭,企业),address_type_2(接送,送达-仅在订单中需要包含)。
因此,在所有四个表之间,除了两个字段在customer和orders表上不同之外,我在地址字段中具有相似之处。
我需要提及的是,每条记录都将使用唯一的ID进行标识。例:
客户编号-10,000-99,999
订单ID-100,000-无限制
驱动程序ID-A1-A999(可能)
会员编号-1,000-9,999
这些只是示例,因此无需花费大量时间来理解它们。
我应该使用多少个地址表来创建一个良好的规范化数据库?
在这一刻,我有三个想法:
一个包含所有字段的地址表,外加一个描述地址类型(客户,订单,会员,驱动程序)的表。不太喜欢这个。
两个地址表。一个与司机和关联公司,另一个与客户和订单。对于第二个表,我将拥有and字段,对于客户而言,该字段始终为NULL。也不喜欢这个。
三个地址表。一种用于驾驶员和会员,一种用于客户,一种用于订单。没有未使用的字段使我认为这可能是比其他两个更好的选择。
有没有人对这三个选择有更好的建议?
非常感谢。
更新:
不用担心表ID的编号系统。那只是一个例子。我仍然没有时间找出最好的编号系统。一旦我解决了地址问题,问题就会解决。
从马特的答案中,我很想让司机和会员表保留所包含的地址,然后以某种方式对客户表和订单表进行排序。
对于客户,我肯定需要一个Addresses表,因为客户可以将多个地址(家庭,公司1,公司2,喜欢的地方等)存储在他们的个人资料中,以便于访问。
我忘记提及订单表,这可能会改变问题的方程式。对于任何订单,我都需要有一个提货和提货地点。但这可以是地址(街道地址)或机场。这意味着与街道地址相关的字段不能与机场特定的字段匹配。因此,我非常确定,在一个表内(全部带有其特定字段)有四个实体(pu_address,pu_airpot,do_address,do_airport)会使我留在未使用的空间中,并且会造成编程混乱。例如:用于接送字段:Address_type,Address_line_1,...,州,国家/地区,机场,航空公司,Flt号,...,以及与接送相同的项目。
因此,我对Order表仍然有疑问,我不确定该如何前进。无论是否使用额外的表格,我都需要同时包括地址和机场上落地点。
更新 再次感谢马特。首先,是的,我将地址存储在单独的字段中。对于订单,问题仍然存在。我将举例说明什么类型的pu并使用豪华轿车服务。地址:伊利诺伊州芝加哥市Main Main 123号,邮编60640; 机场:ORD,AA,123。我需要将所有这些字段以某种方式集成到表格中。
选项:订购表
order_id,...,需要同时具有机场和地址字段的领取字段,具有机场和地址字段的下车字段。
此选项听起来仍然不正确。
接下来将有两个额外的表。一个用于地址(包括用于识别接送的区域)。另一个将用于机场(具有用于pu的字段或也可以用于字段)。
我也不喜欢这个选项,因为我将需要执行两个查询才能只检索订单记录的信息。首先,我将检索订单信息,在知道了接送服务的类型(机场或地址)之后,我将执行另一个查询以检索特定的接送服务。
所以,再次...我在做什么错?我想念什么吗?
是的,我一定会使用一些验证系统来确保地址正确。
我想检索一个地理点上小范围内所有街道地址的列表.
使用的场景是用户从当前位置的地址列表(在50米内)中选择他/她的当前地址,因为位置检索不够准确.
我想知道是否可以使用Google Maps API?否则,是否有人知道我可以用于此目的的替代API?
从我所看到的情况来看,虽然Google地图反向地理编码服务为地理点返回了许多"地址",但它们通常只是地址的不同表示,而不是地址附近的地址.
我在SO上看过一些类似的问题,但没有人能找到我想要的答案.
street-address ×10
api ×2
php ×2
regex ×2
algorithm ×1
android ×1
autocomplete ×1
c# ×1
city ×1
join ×1
location ×1
lookup ×1
map ×1
perl ×1
punctuation ×1
t-sql ×1
validation ×1