我想在Java中实现一个算法,以找到最近的类似字符串。
我在 mysql 数据库中有 station_names ,例如 - 23 ST,233 ST,21 ST,14 St Times Sq,24 ST
如果用户输入第23站等搜索字符串,则应返回 23 ST和233 ST ,或者如果用户输入时代广场那么结果应该是 14 St Times Sq 。
我在互联网上发现了很多算法,但我对使用哪种算法感到困惑。
您能否建议我使用Java实现的最佳算法?
提前致谢
答案 0 :(得分:2)
要回答您的问题,通常没有最佳算法,只有在您的特定情况下效果最佳的算法。
您需要定义一个或多个指标来衡量输入与数据库中的字符串之间的差异,然后按分数对结果进行排序(请参阅String metric)。
问题是最相似的字符串并不总是最接近的地址。这就是为什么我说你必须定义自己的指标。
答案 1 :(得分:1)
有很多种方法可以做到这一点。例如,您可能会说21 ST
比23rd station
更接近233 ST
。你必须找出你想要的东西,找到最符合它的方法。
您可能需要多种方法,然后对结果进行评分。这就是我要做的。
您可以通过提供大型样本数据测试套件并找出哪种方法(或组合)为您提供最高的成功率来测试不同的方法。