我需要通过名单进行搜索,找出匹配百分比的相关匹配名称。例如,如果我有名单,
Ramu
Rahim
Raju
Ravan
Mustafa
如果我给出像拉希姆这样的名字, 它会找出名称Rahim并显示匹配的百分比,如
Given Input:Raheem
Output:
Name Rahim match with the name Raheem 70%
我可以使用MySql满足我的要求吗?
注意:我已尝试在mysql中使用FullText搜索,但该搜索 只匹配不是字符的单词
答案 0 :(得分:1)
答案 1 :(得分:0)
有一个用于mysql的UDF,你可以在这里找到:http://joshdrew.com/
寻找:[2004-02-06] - MySQL Levenshtein距离UDF
您可以使用Levenshtein距离来计算百分比差异。
这可能看起来像:
(min(长度('hello'),长度('hollo')) - LevDist('hello','hollo'))/ min(长度('hello'),长度('hollo'))< / p>
答案 2 :(得分:0)
您是否要求使用算法来比较字符串,或者如何在SQL查询中使用此类算法?
如果要问后者,请创建一个用户定义的函数,根据2个输入字符串输出百分比,然后为表中的每个字符串选择并过滤百分比高于您要查找的阈值。
类似于:
SELECT name, MyFuzzyStringComparer(name, @nameInQuestion) percentage
FROM nameTable
WHERE percentage > @threshold
ORDER BY percentage
如果您正在寻找比较算法,那么上面的回答似乎涵盖了它。