2

私はVS2010 Expressとプログラミング初心者を使用しています。

別のサイトから賭けオッズを抽出し、記録を作成しています。

ただし、同じチームに異なる名前を使用しており、サイト間でチームを一致させる唯一の方法です。

たとえば、Man United、Man Utd、Manchester United、Manu は同じチームですが、別のサイトで使用されています。

これはまれな問題ではなく、解決するための標準的な方法またはオブジェクト タイプがいくつかあるはずです。

があれば教えてください。

この段階で、データベースとしてリストを作成することにしました

List<teamdata> teamTable = new List<teamdata>();

public class teamdata
{
private long teamId;
private List<string> teamName; // Names like Man United, Man Utd... are added
...
}

チームIDが割り当てられるまで、テーブルを介してすべての名前を検索する必要があります(いくつかの高速検索アルゴリズム)。

これが最悪の実装であることはわかっています。正しい向きを教えてください。

4

2 に答える 2

1

リストとクラス teamdata を使用して設計を簡素化できますDictionary<long,HashSet<string>> teams-ここで、キーはチームIDで、値は代替名のセットであり、チームを見つける問題は呼び出すことです(たとえば、`

Dictionary<long,HashSet<string>> teams = new Dictionary<long,HashSet<string>>();
... fill data
string queryName = "Man Utd"`) 

var teamOrNull = teams.Where(p=>p.Value.Contains(queryName)).FirstOrDefault() 
if(teamOrNull != null)
   long foundID = teamOrNull.Key;
于 2013-03-28T15:13:56.860 に答える
0

この種の問題は、ファジー ロジック ( http://en.wikipedia.org/wiki/Fuzzy_logic )で解決できます。SQL Server を使用している場合は、関数 SOUNDEX が役立つ場合があります。

于 2013-03-28T15:13:56.377 に答える