3

我想在 Java 中实现一个算法来找到最近的相似字符串。

我在mysql数据库 中有station_names ,例如 - 23 ST、233 ST、21 ST、14 St Times Sq、24 ST

如果用户输入像23rd station这样的搜索字符串,那么我应该返回23 ST 和 233 ST或者如果用户输入像Times Square那么结果应该是14 St Times Sq

我在互联网上找到了很多算法,但我对使用哪一种感到困惑。

您能否建议我可以在 Java 中实现的最佳算法?

提前致谢

4

2 回答 2

2

要回答您的问题,通常没有最佳算法,只有在您的特定情况下效果最佳的算法。

您将需要定义一个或多个指标来衡量输入与数据库中的字符串之间的差异,然后按分数对结果进行排序(请参阅字符串指标)。

问题是最相似的字符串并不总是最接近的地址。这就是为什么我说你必须定义自己的指标。

于 2012-12-26T12:54:04.577 回答
1

有很多可能的方法来做到这一点。例如,您可能会说 that 21 STis close to 23rd stationthan 233 ST。你必须弄清楚你想要什么,并找到最适合它的方法。

您可能需要多种方法,然后对结果进行评分。这就是我会做的。

您可以通过提供大样本数据测试套件并找出哪种方法(或组合)为您提供最高成功率来测试不同的方法。

于 2012-12-26T12:40:39.813 回答