Naz*_*nko 8 c# fuzzy-search fuzzy-logic
我需要实现某种形式:
string textToSearch = "Extreme Golf: The Showdown";
string textToSearchFor = "Golf Extreme Showdown";
int fuzzyMatchScoreThreshold = 80; // One a 0 to 100 scale
bool searchSuccessful = IsFuzzyMatch(textToSearch, textToSearchFor, fuzzyMatchScoreThreshold);
if (searchSuccessful == true)
{
-- we have a match.
}
Run Code Online (Sandbox Code Playgroud)
这是用C#编写的函数存根:
public bool IsFuzzyMatch (string textToSearch, string textToSearchFor, int fuzzyMatchScoreThreshold)
{
bool isMatch = false;
// do fuzzy logic here and set isMatch to true if successful match.
return isMatch;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在IsFuzzyMatch方法中实现逻辑.有任何想法吗?也许为此目的有一个现成的解决方案?
小智 9
我喜欢Dice Coeffiecient,Levenshtein Distance,最长公共子序列,有时是Double Metaphone的组合.前三个将为您提供阈值.我更喜欢以某种方式组合它们.因人而异.
我刚刚发布了一篇博文,其中有一个C#实现,每个都称为四函数,用于在C#扩展中查找模糊字符串匹配.
小智 1
您需要Levenshtein 距离算法来查找如何通过插入、删除和修改操作从一个字符串转到另一个字符串。您 fuzzyMatchScoreThreshold 是一个编辑距离,以简单的方式除以字符串的长度。