如何将略有不同的团队名称匹配到一个团队中

时间:2013-03-28 15:02:21

标签: c# implementation

我正在使用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。

我知道这是最糟糕的实施方案。请告诉我正确的方向。

2 个答案:

答案 0 :(得分:1)

您可以使用List和类teamdata将设计简化为Dictionary<long,HashSet<string>> teams - 其中key是团队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;

答案 1 :(得分:0)

这种问题可以通过模糊逻辑(http://en.wikipedia.org/wiki/Fuzzy_logic)来解决。如果您使用SQL Server,SOUNDEX函数可能会对您有所帮助。