如何将稍有不同的队名匹配成一个队名

本文关键字:一个 | 更新日期: 2023-09-27 18:06:32

我使用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可以分配。

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

如何将稍有不同的队名匹配成一个队名

你可以简化你的设计与列表和类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;

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

相关文章: