如何将稍有不同的队名匹配成一个队名
本文关键字:一个 | 更新日期: 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可能会对您有所帮助。