我想在Java中实现一个算法来查找最接近的相似字符串。
我有station_names在mysql数据库,如- 23st, 23st, 21st, 14st Times Sq, 24st
,如果用户输入像第23站这样的搜索字符串,那么我应该返回23 ST和233 ST或者如果用户输入像时代广场这样的搜索字符串,那么结果应该是14 ST Times Sq。
我在网上找到了很多算法,但我不知道该用哪一个。
你能建议我最好的算法,我可以在Java中实现?
Thanks in advance
回答你的问题,一般来说没有最好的算法,只有在你的特定情况下最有效的算法。
您将需要定义一个或多个度量来度量输入和数据库中字符串之间的差异,然后按分数对结果进行排序(参见字符串度量)。
问题是最相似的字符串并不总是最近的地址。这就是为什么我说你必须定义你自己的指标
有许多可能的方法可以做到这一点。例如,你可以说21 ST
比233 ST
更接近23rd station
。你必须弄清楚自己想要什么,然后找到最适合自己的方法。
您可能需要多种方法,然后对结果进行评分。这就是我要做的。
您可以通过提供一个大样本数据测试套件来测试不同的方法,并找出哪种方法(或组合)给您最高的成功率。