我有一个数据库表,其中包含来自 Google 地图地理编码响应的地址。 Google 缩写了所有方向(西 -> W、东 -> E 等)。
因此,如果我输入“100 West Pender Street”这样的地址,那么 Google 地图返回的格式化地址是“100 W Pender St”,我将其插入到表中。
现在,如果用户出现并搜索该地址,则以下所有内容都应该匹配:
彭德街
西彭德街
100 待办者
100W 吊灯
100 西彭德
他们或多或少都是这样做的。然而,表中的“w”被忽略,因为它低于最小字长。位于 east penner 的地址在搜索结果中具有相同的权重(“E”也被忽略)。
处理这个问题的最佳方法是什么?
我怀疑将最小字长设置为 1 是一件“坏事”。
我可以搜索并替换谷歌地址中的已知缩写(N、E、S、W、St、Ave、Dr 等),并将它们替换为它们的扩展名 - 但有些街道名称不是这样的有效(某些城市有单字母街道名称:J 街等...)
此外,像“123 160 St”这样的地址根本无法搜索,因为街道号码 (123) 和街道名称 (160) 都低于最小字长。
MySQL FullText 是正确的方法吗?
Sphinx 提供更好的东西吗?
或者还有其他我还没有考虑过的解决方案?请记住,用户的搜索查询不仅会与属性的地址相匹配,还会与其他文本列(例如属性名称和描述)相匹配。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)