0

我需要通过名单搜索并找出具有匹配百分比的相关匹配名称。例如,如果我有这样的名单,

Ramu
Rahim
Raju
Ravan
Mustafa

如果我给 Raheem 这样的名字,它会找出 Rahim 的名字并显示匹配的百分比,比如

Given Input:Raheem
Output:
Name Rahim match with the name Raheem 70%

我可以使用 MySql 满足我的要求吗?

注意:我在 mysql 中尝试过全文搜索,但该搜索只匹配单词而不是字符

4

3 回答 3

1

虽然它不能直接回答您的问题,但您可能需要使用SoundexMetaphone

Soundex 是一种语音算法,用于按声音索引名称,如英语发音。

于 2012-03-20T07:14:14.733 回答
0

有一个用于 mysql 的 UDF,您可以在这里找到:http: //joshdrew.com/

寻找:[2004-02-06] - MySQL Levenshtein Distance UDF

您可以使用 Levenshtein 距离来计算百分比差异。

这可能看起来像:

(min(length('hello'), length('hollo')) - LevDist('hello', 'hollo')) / min(length('hello'), length('hollo'))

于 2012-03-20T07:42:39.267 回答
0

您是否要求一种算法来比较字符串,或者如何在 sql 查询中使用这种算法?

如果您要问后者,请创建一个用户定义的函数,该函数根据 2 个输入字符串输出百分比,然后为表中的每个字符串选择并过滤百分比高于您要查找的任何阈值的位置。

所以像:

SELECT name, MyFuzzyStringComparer(name, @nameInQuestion) percentage 
FROM nameTable 
WHERE percentage > @threshold 
ORDER BY percentage

如果您正在寻找比较算法,那么上面的回答似乎涵盖了它。

于 2012-03-20T08:27:46.627 回答