Я написал очень простую программу, использующую пакет nuget в c# для чтения в 2 CSV-файлах и нечеткого сопоставления их и вывода нового CSV-файла со всеми совпадениями. Проблема в том, что мне нужно, чтобы программа могла читать и сравнивать файлы размером до 700 КБ и сравнивать их до 100 КБ. Я не смог найти способ ускорить процесс. Есть ли способ, которым я могу сделать это? Я даже буду использовать другой язык, если это будет необходимо.
Вы можете игнорировать весь закомментированный код, который он только что использовал, когда я использовал его в целях тестирования. Извините, я более новый программист.
Функция чтения CSV предназначена для чтения в CSV. остальное - код внутри другой функции, где я передаю строковые массивы, чтобы передать их через fuzzymatch
static string[] ReadCSV(string path)
{
List<string> name = new List<string>();
List<string> address = new List<string>();
List<string> city = new List<string>();
List<string> state = new List<string>();
List<string> zip = new List<string>();
using (var reader = new StreamReader(path))
{
reader.ReadLine();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
name.Add(values[0] +", "+ values[1]);
//address.Add(values[1]);
//city.Add(values[2]);
//state.Add(values[3]);
//zip.Add(values[4]);
}
}
string[] name1 = name.ToArray();
return name1;
//foreach (var item in name)
//{
// Console.WriteLine(item.ToString());
//}
}
StringBuilder csvcontent = new StringBuilder();
string csvpath = @"C:\Users\bigel\Documents\outputtest.csv";
csvcontent.AppendLine("Name,Address,Match");
//Console.WriteLine("Levenshtein Edit Distance:");
int x = 1;
foreach (var name in string1)
{
for (int i = 0; i < length; i++)
{
int leven = match[i].LevenshteinDistance(name);
//Console.WriteLine(match[i] + "\t{0} against {1}", leven, name);
if (leven <= 7)
{
output[i] = input[i] + ",match";
csvcontent.AppendLine(output[i]);
//Console.WriteLine(match[i] + " " + leven + " against " + name + " is a Match");
//Console.WriteLine(output[i]);
}
else
{
if (i == 500)
{
Console.WriteLine(x);
x++;
}
}
}
}
File.AppendAllText(csvpath, csvcontent.ToString());