如何在数据库中找到重复的地址,或者在填写表单时更好地阻止人们?我想越早越好?
是否有任何好的方法来抽象街道,邮政编码等,以便可以检测到错别字和简单的尝试获得2次注册?喜欢:
Quellenstrasse 66/11 Quellenstr. 66a-11
我在说德语地址......谢谢!
您可以使用Google GeoCode API
事实上,这两个例子都给出了结果,只是试了一下.这样您就可以获得可以保存在数据库中的结构化结果.如果查找失败,请要求用户以其他方式编写地址.
你越早阻止别人,从长远来看就越容易!
不太熟悉您的数据库架构或数据输入表单,我建议一个类似如下的路由:
您的数据库中为每个地址"部分"都有不同的字段,例如街道,城市,邮政编码,Länder等.
将您的数据输入表格分类,例如街道,城市等
上述背后的原因是每个部分都可能有自己特定的"规则"来检查稍微改变的地址,("Quellenstrasse" - >"Quellenstr.","66/11" - >"66a-11")因此,验证代码可以检查每个字段的值是否存在于各自的db字段中.如果没有,您可以拥有一个类,为每个给定的字段应用转换规则(例如"strasse"阻止为"str")并再次检查重复项.
显然上面的方法有它的缺点:
它可能很慢,具体取决于您的数据集,让用户等待
用户可以尝试通过将地址"部件"放在错误的字段中(将邮政代码附加到城市等)来绕过它.但从经验来看,我们发现即使是如上所述的简单检查,也会阻止大部分用户输入预先存在的地址.
完成基本检查后,您可以查看优化所需的数据库访问,优化规则等以满足您的特定模式.你也可以看一下MySQL的match()函数来编写类似的文本.