我想在Java中实现一个算法来查找最近似的字符串。在Java中实现的最佳字符串匹配算法?
我有station_names在的MySQL数据库等 - 23 ST,233 ST,21 ST,14圣时代广场,24 ST
,并且如果用户输入等23日站搜索字符串然后我应该返回23 ST和233 ST或者如果用户输入像时代广场那么结果应该是14时代广场。
我在互联网上发现了很多算法,但我很困惑要使用哪一种算法。
您能否给我推荐我可以用Java实现的最佳算法?
在此先感谢
我想在Java中实现一个算法来查找最近似的字符串。在Java中实现的最佳字符串匹配算法?
我有station_names在的MySQL数据库等 - 23 ST,233 ST,21 ST,14圣时代广场,24 ST
,并且如果用户输入等23日站搜索字符串然后我应该返回23 ST和233 ST或者如果用户输入像时代广场那么结果应该是14时代广场。
我在互联网上发现了很多算法,但我很困惑要使用哪一种算法。
您能否给我推荐我可以用Java实现的最佳算法?
在此先感谢
有很多方法可以做到这一点。例如,您可能会说21 ST
比233 ST
更接近23rd station
。你必须弄清楚你想要什么,找到最适合的方法。
很可能您可能需要多种方法然后对结果进行评分。这是我会做的。
您可以通过提供大型样本数据测试套件并找出哪种方法(或组合)能够提供最高的成功率来测试不同的方法。
感谢Peter的回答,我想返回用户想要搜索的最类似的字符串,例如** 23 ST **(实际电台名称)用户可以输入搜索字符串 - ** 23rd Station/23 Station/23rd St ** – Deepu
您可以定义“最相似”吗?虽然这是大多数人的想法,但对于计算机,您需要正式定义它。 –
要回答你的问题,通常没有最好的算法,只有在你的特定情况下效果最好的算法。
您将需要定义一个或多个度量标准来测量输入和DB中的字符串之间的差异,然后按照得分对结果进行排序(请参阅String metric)。
问题是最相似的字符串并不总是最接近的地址。这就是为什么我说你必须定义你自己的指标。
谢谢桑迪,我会试试这个。 – Deepu
*“你能给我推荐最好的算法吗?”*我通常会选择带圆点的那种,因为它更漂亮。当然,你对“更好”的定义可能不包括视觉效果,那么为什么不告诉我们你的意思是更好? –
感谢Andrew对你的回复,最好的算法意味着会产生用户想要搜索的最类似的字符串,例如,对于23 ST用户可以给搜索字符串,如23rd Station/23 Station/23rd St ect – Deepu
http://en.wikipedia.org/wiki/String_searching_algorithm讨论一些流行的算法,但你需要在Java中实现它们 – AurA