此答案适用于没有简单答案的数据。如果您有数据密钥,请使用它。
在编写任何代码之前,我首先会问自己要搜索什么。“匹配”这两者的搜索参数是什么?关键词?你的地毯上有某种标识符吗?也许通过模式?在触摸键盘之前,我会先尝试解决这个问题。按大小搜索可能不是一个好主意。毕竟,两张 8x8 的地毯可能有数百种不同的可能性。
但也许描述之间有一些相似之处。如果描述本身是简单的英语,我会看看我是否找不到删除一些非常常见的单词以及标点符号并用空格替换它们的方法。 编辑:还使用 ToLower() 函数调用删除大写
List<String> CommonWords;
foreach(string a in CommonWords)
{
DataBaseA.DescriptionString.replace(a, " ");
DataBaseB.DescriptionString.replace(b, " ");
}
例如,假设地毯描述 1 如下:“这款地毯是任何房间的绝妙补充,红色花卉图案与米色质朴外观相结合”
地毯描述 2 是:“时尚质朴的花卉图案,搭配现代的红色和米色”
运行 'common word remover' 会删除,比如'A'、'with'、'and'、'this'、'is'、'to'
你会拥有: 地毯美妙的添加任何房间红色花卉图案结合米色质朴的外观
和
“时尚质朴的花卉图案完整的当代红米色”
然后您可以遍历字符串并进行字符串匹配,如果匹配超过一定数量,则触发“数据网格”匹配。
string[] ArrayStringA = DataBaseA.DescriptionString.split(" ");
string[] ArrayStringB = DataBaseB.DescriptionString.split(" ");
int DataCounter = 0;
for(int i = 0; i < ArrayStringA.Length; i++)
{
for(int j = 0; j < ArrayStringB.Length; j++)
{
if(ArrayStringB[j] == ArrayString[i])
DataCounter++;
}
}
if(DataCounter > 4) //Match
现在请记住,这并不漂亮。这样做可能会花费大量时间来比较和维护,这绝不是万无一失的。但是,这是一个想法,希望您至少可以使用其中的一点点来提出更好的解决方案。
编辑二:当你的程序运行时,我不认为这是你想要一遍又一遍地发生的事情。所以我要做的是运行程序并构建匹配的 DataGrid。然后,一旦您找到匹配项并且一切看起来都不错,请将唯一标识符键添加到您的新数据中。通过这种方式,您将能够准确地知道未来哪个是哪个。