この回答は、単純な回答がないデータに対するものです。データ キーをお持ちの場合は、それを使用してください。
何かをコーディングする前に、まず何を検索するのかを自問します。2つを「一致させる」ための検索パラメーターは何ですか? キーワード?あなたのカーペットにはある種の識別子がありますか? 柄によるかな。キーボードに触れる前に、まずこれを理解しようとします。サイズで検索するのはおそらく良い考えではありません。結局のところ、2 枚の 8x8 カーペットには、何百もの異なる可能性があります。
しかし、おそらく説明の間にいくつかの類似点があります。説明自体が平易な英語である場合、非常に一般的な単語や句読点を削除してスペースに置き換える方法が見つからないかどうかを確認します. 編集: ToLower() 関数呼び出しで大文字化も削除します
List<String> CommonWords;
foreach(string a in CommonWords)
{
DataBaseA.DescriptionString.replace(a, " ");
DataBaseB.DescriptionString.replace(b, " ");
}
たとえば、カーペットの説明 1 が次のようになっているとします。「このカーペットは、ベージュの素朴な外観と赤い花柄が組み合わされており、どの部屋にもぴったりです。」
カーペットの説明 2 は、「現代的な赤とベージュで仕上げた、スタイリッシュで素朴な花柄」
「共通語リムーバー」を実行すると、「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
これはきれいではないことに注意してください。これを行うと、比較と維持にかなりの時間がかかる可能性があり、決して確実ではありません。ただし、これはアイデアです。うまくいけば、より良い解決策を考え出すために、少なくともそれを少し使用できます。
編集 II:あなたのプログラムが実行されるとき、私はこれがあなたが何度も何度も起こりたいと思うことだとは思いません。したがって、プログラムを実行して、一致するデータ グリッドを作成します。次に、一致が得られ、すべてが良さそうに見えたら、一意の識別子キーを新しいデータに追加します。このようにして、将来的 にどれがどれであるかを正確に知ることができます。