使用MySQL Fulltext(或sphinx?)进行模糊街道地址搜索

emh*_*emh 6 mysql search full-text-search sphinx

我有一个数据库表,其中包含来自Google Maps地理编码响应的地址.谷歌缩小所有方向(西 - > W,东 - > E等).

因此,如果我输入"100 West Pender Street"这样的地址,那么Google Maps返回的格式化地址就是"100 W Pender St",我将其插入到我的表格中.

现在,如果用户出现并搜索该地址,则以下所有内容应匹配:

pender street west pender street 100 pender 100 w pender 100 west pender

他们或多或少都这样做.然而,表中的"w"被忽略,因为它低于最小字长.落在东柏纳的地址在搜索结果中被赋予相同的权重("E"也被忽略).

处理这个问题的最佳方法是什么?

我怀疑将最小字长设置为1是"坏事".

我可以搜索并替换谷歌地址中的已知缩写(N,E,S,W,St,Ave,Dr等)并用它们的扩展替换它们 - 但是有一些街道名称,这不是有效(有些城市有单字母街道名称:J街等......)

此外,像"123 160 St"这样的地址根本无法搜索,因为街道号码(123)和街道名称(160)都低于最小字长.

MySQL FullText是正确的方法吗?Sphinx能提供更好的服务吗?

或者还有其他我尚未考虑的解决方案吗?请记住,用户的搜索查询不仅要匹配属性的地址,还要匹配其他文本列,例如属性名称和描述.