示例#1
0
        public static List <ParallelSearchResult> ArrayThreadTask(object paramObj)
        {
            ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj;

            string wordUpper = param.wordPattern.Trim().ToUpper();

            //Результаты поиска в одном потоке
            List <ParallelSearchResult> Result = new List <ParallelSearchResult>();

            //Перебор всех слов во временном списке данного потока
            foreach (string str in param.tempList)
            {
                //Вычисление расстояния Дамерау-Левенштейна
                int dist = EditDistance.Distance(str.ToUpper(), wordUpper);
                //Если расстояние меньше порогового, то слово добавляется в результат
                if (dist <= param.maxDist)
                {
                    ParallelSearchResult temp = new ParallelSearchResult()
                    {
                        word      = str,
                        dist      = dist,
                        ThreadNum = param.ThreadNum
                    };
                    Result.Add(temp);
                }
            }
            return(Result);
        }
示例#2
0
        public static List <ParallelSearchResult> ArrayThreadTask(object t_param)
        {
            ParallelSearchThreadParam param = t_param as ParallelSearchThreadParam;
            string word_temp = param.wordTemp.Trim();
            List <ParallelSearchResult> result_list = new List <ParallelSearchResult>();

            foreach (string str in param.searchList)
            {
                int dist = Fisher.GetLen(str.ToUpper(), word_temp.ToUpper());
                if (dist <= param.maxDist)
                {
                    ParallelSearchResult temp_list = new ParallelSearchResult()
                    {
                        word      = str,
                        dist      = dist,
                        threadNum = param.threadNum
                    };
                    result_list.Add(temp_list);
                }
            }
            return(result_list);
        }
示例#3
0
        public static List <ParallelSearchResult> ArrayThreadTask(object paramObj)
        {
            ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj;
            string wordUpper = param.wordPattern.Trim().ToUpper();
            List <ParallelSearchResult> Result = new List <ParallelSearchResult>();

            foreach (string str in param.tempList)
            {
                int dist = Levensthtain.Distance(str.ToUpper(), wordUpper);
                if (dist <= param.maxDist)
                {
                    ParallelSearchResult temp = new ParallelSearchResult()
                    {
                        word      = str,
                        dist      = dist,
                        ThreadNum = param.ThreadNum
                    };
                    Result.Add(temp);
                }
            }
            return(Result);
        }