使用mysql的模糊逻辑

时间:2012-03-20 07:12:04

标签: java mysql fuzzy-logic

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

Ramu
Rahim
Raju
Ravan
Mustafa

如果我给出像拉希姆这样的名字, 它会找出名称Rahim并显示匹配的百分比,如

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

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

  

注意:我已尝试在mysql中使用FullText搜索,但该搜索   只匹配不是字符的单词

3 个答案:

答案 0 :(得分:1)

虽然它没有直接回答您的问题,但您可能希望使用SoundexMetaphone

  

Soundex是一种通过声音索引名称的语音算法,如   发音为英文。

答案 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

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