OCR からの単語があり、近似一致のリストが必要です。maxFrom がなくても生きていける。サンプル コードは強引ですが、要件が定義されていることを願っています。600,000 のリストに対して、これには 2 秒かかります。FTSword.Word は文字列です。
理想的には、「findd」は 2 番目の d にのみ追加クレジットを付与します。そして、i が見つかると、f はクレジットを取得しません。力ずくでできます。私はその2秒を短縮しようとしています。提案されたソリューションをテストして報告します。
質問??は。速くする方法は?(そしてより賢い)
ありがとう
            char[] find = new char[] { 'f', 'i', 'n', 'd' };
            char[] word;
            int maxFrom = 10;
            int minMatch = 3;
            int count;
            List<FTSword> matchWords = new List<FTSword>();
            foreach (FTSword ftsw in fTSwords)
            {
                if (ftsw.Word.Length < maxFrom)
                {
                    word = ftsw.Word.ToCharArray();
                    count = 0;
                    foreach (char fc in find)
                    {
                        foreach (char wc in word)
                        {
                            if (char.ToLower(wc) == char.ToLower(fc))
                            {
                                count++;
                                break;
                            }
                        }
                    }
                    if (count >= minMatch)
                    {
                        // Debug.WriteLine(count.ToString() + ftsw.Word);
                        matchWords.Add(ftsw);
                    }
                }
            }
            Debug.WriteLine(matchWords.Count.ToString());