C# 基于阈值滤波器C的模糊匹配#

C# 基于阈值滤波器C的模糊匹配#,c#,fuzzy-search,fuzzy-logic,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, fuzzyMa

我需要执行某种类型的操作:

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.
}
下面是用C#编写的函数存根:

但我不知道如何在IsFuzzyMatch方法中实现逻辑。
有什么想法吗?也许有现成的解决方案可以实现这一目的?

您需要通过插入、删除和修改操作来找到如何从一个字符串转到另一个字符串。FuzzyMatchsCoreStorhold是一个Levenshtein距离,用简单的方法除以字符串的长度。

我喜欢骰子系数、Levenshtein距离、最长公共子序列以及有时双变音的组合。前三个将为您提供一个阈值。我更喜欢以某种方式将它们结合起来。YMMV

我刚刚发布了一篇博客文章,其中每一个都有一个C#实现,叫做。

你可以用单词作为符号而不是字符来计算,单词根据它们的Levenshtein距离被认为是相等的。在Levenshtein距离上有两个。看到了吗
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;
}