public double GetAffinities(DbObject obj, IEnumerable <string> words, ref Affinities affinities, Type typ = null, int weight = 1) { double totalScore = 0; // affinities = new Affinities(); SortedList <string, double> results = new SortedList <string, double>(); foreach (AffinityTable table in affinityTables.Values) { double score = GetAffinity(table.affinityTableName, words, typ); if (score > 0) { score = Math.Log(score, 10); totalScore += score; results.Add(table.affinityTableName, score); } } foreach (string t in results.Keys) { affinities.Add(t, results[t]); } if (objectAffinities.ContainsKey(obj)) { T.Assert(affinities == objectAffinities[obj]); } else { objectAffinities.Add(obj, affinities); } //affinities.Add(t, T.Normalize(results[t], 0, totalScore, weight)); return(totalScore); }
public void Normalize() { return; SortedList <string, double> maxes = new SortedList <string, double>(); foreach (DbObject c in objectAffinities.Keys) { Affinities a = objectAffinities[c]; a.Normalize(); foreach (string t in a.tables) { if (!maxes.ContainsKey(t)) { maxes.Add(t, 0); } maxes[t] = Math.Max(maxes[t], a.Get(t)); } } foreach (DbObject c in objectAffinities.Keys) { Affinities a = objectAffinities[c]; List <string> affinityTables = a.tables.ToList(); foreach (string t in affinityTables) { a.Set(t, T.Normalize(a.Get(t), 0, maxes[t])); } a.Normalize(); } }
public override int FindAffinities() { affinities = new Affinities(); foreach (DbColumn c in columns.Values) { affinityMatrix.GetAffinities(this, c.objectNameWords, ref affinities, c.dataType, 1); } affinityMatrix.GetAffinities(this, objectNameWords, ref affinities, null, 50); affinities.SummarizeAffinities("important", "descriptive,payment,value,order,need,status,product,sale,manufacturer,customer,person,buyer,client,need,purchase", true); return(affinities.Count); }