数千个相似加密货币条目列表的编辑距离

Levenshtein Distance for a List of Thousands of Similar Entries of Cryptocurrencies

我有一个按字母顺序排列的一千多种不同加密货币的列表。问题就在这里,如果用户查询 "BTC" 他们将从列表中删除 BTCA (Bitair),因为 BTCA 在比特币之前出现。或者,输入 Bitcoin 会给你 "AntiBitcoin",因为 THAT 出现在 Bitcoin 之前。最初,发生这种情况是因为我使用了 .Contains() 这是不正确的,所以现在我切换到 Levenshtein 进行脱色。

我正在设置一个像这样的简单循环:

foreach (String s in crypto.currencies)
{
    if (Crypto.LevenshteinDistance(s,currency) <= (Stuck on the right way to do this now))
    {
        //foo
    }
    Console.WriteLine(s + " is not a match. Continuing.");
}

但我非常困惑我应该如何真正获得用户想要的正确项目。这可能看起来完全愚蠢,我正在尝试做的事情,但我必须能够正确地查询这个列表(另外,我已经手动输入了它,哎哟)

您可以按照与目标货币的编辑距离排序列表,并选择顶部的:

var closestMatch = crypto.currencies
    .OrderBy(s => Crypto.LevenshteinDistance(s, currency))
    .First();