我有一张桌子

name varchar
address varchar
country varchar
city varchar
.....


存储位置地址

例:

name|address|country
HaLong hotel|156 blahblah street|Vietnam
Hotel Ha Long|156 blah blah|Vietnam


上面两行是重复数据。

当用户提交新位置时,我有一个表格。该代码需要查找类似记录才能发出消息(例如:此位置已存在于db中,是使用它还是创建新的?)

如何进行查询以获得类似的记录?

最佳答案

没有大量的工作,“ 156 blahblah street”和“ 156 blah blah”没有足够的共同之处来自动化任何内容,并且不会在单个SQL查询中发生。

尝试3种方法:

1)使用类似Google Maps的Geocoding来查找地址,这很容易弄清楚人们在键入“ street”和其他常见错误时的意思是“ avenue”,因此可以避免大多数拼写错误。您也可以获取经度/纬度数据以确保匹配。

2)在地址文本字段上使用autocompleter。当有人输入“ 156 blah”时,它将显示所有匹配项的列表,因此用户将更有可能选择正确的项。

3)使用soundex等实现您自己的语言算法,与地理编码相比,这可能会非常慢。我会避免使用此选项-听起来很有趣,但这太不切实际了。

10-08 06:15