我需要在mySql数据库中为地址坐标组织缓存。存储地址的最佳做法是什么?我是否需要压缩地址字符串或按原样使用它?组织地址缓存
编辑: 好吧,让我们重申我的问题。 如果我将来需要精确地搜索此字符串,如何将长(最多512个)字符串存储在数据库中。
我需要在mySql数据库中为地址坐标组织缓存。存储地址的最佳做法是什么?我是否需要压缩地址字符串或按原样使用它?组织地址缓存
编辑: 好吧,让我们重申我的问题。 如果我将来需要精确地搜索此字符串,如何将长(最多512个)字符串存储在数据库中。
如果你是绝对某些搜索字符串进行标准化(如:剥离所有额外的空间,迫使小写字母等),以避免歧义,并且您需要搜索完全匹配(即,您要么找到完全正规化的字符串,也不需要通过子字符串,soundex,部分匹配,按排序等进行搜索。 - 这就是我如何阅读你的“正好这个字符串”),你可以考虑计算字符串的哈希码,把它放在数据库中并编制索引。
如果您使用返回数字的散列码函数,您将拥有非常高效的访问索引。当然,您仍然可以保留用于打印和不同访问方法的原始字符串字段。
可能存在的问题:尽管散列码可以最大限度地减少散列冲突的可能性,但它们不能保证不发生,所以您也应该管理它。另外,除非你有很多很多的地址,否则我怀疑加速增益是否值得麻烦。
哈希码(如数字)是一个好主意。你只需要检查结果来验证这是相同的字符串(避免散列冲突) – 2010-03-09 12:12:36
MySQL能管理坐标和这些值进行操作,尝试寻找在http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html
如果你想要的东西简单,personnaly我平时单独存放的城市代码,城市名称和ADRESS字符串的其余部分。然后,我可以在这些字段上进行索引和搜索(逐个或组合)。
如果你想要一个简单的使用坐标,你可以简单地存储纬度/经度和做基本的比较
有趣的信息,但我需要一些简单的东西。 – 2010-03-09 10:47:08
我编辑了答案,但你的问题并不清楚 – 2010-03-09 10:52:28
你能澄清你在这种情况下“坐标”是什么意思? – 2010-03-09 10:40:29
这对我的问题没有意义。我只需要通过地址字符串进行快速搜索。 – 2010-03-09 10:45:33