public static void commit(NcDBContext db, string[] query) { var ns = from m in db.Ncs select m; // Somehow this fixes certain LINQ errors. string qa = query[0]; string qb = query[1]; string qc = query[2]; ns = ns.Where(s => s.A.Equals(qa) && s.B.Equals(qb) && s.C.Equals(qc)); List <Nc> preld = ns.ToList(); if (preld.Count < 1) { Nc n = new Nc(); n.A = qa; n.B = qb; n.C = qc; n.Count = 1; db.Ncs.Add(n); db.SaveChanges(); } else { preld[0].Count += 1; db.Entry(preld[0]).State = EntityState.Modified; db.SaveChanges(); } }
public static void commit(NcDBContext db, List <string[]> queries) { foreach (string[] i in queries) { commit(db, i); } }
private static string findNextToken(NcDBContext db, string a, string b) { var ns = from m in db.Ncs select m; ns = ns.Where(s => s.A.Equals(a) && s.B.Equals(b)); List <Nc> preld = ns.ToList(); if (preld.Count == 0) { return(null); } else if (preld.Count == 1) { return(preld[0].C); } //preld.Sort((x, y) => x.Count.CompareTo(y.Count)); Random r = new Random(); return(preld[r.Next(0, preld.Count)].C); }
/// <summary> /// Builds a sentence using the highest supported N-gram level. On missing link at N2, it will terminate. /// </summary> /// <param name="query">Initial user query.</param> /// <returns>Contructed sentence.</returns> public static string build(NcDBContext db, string query) { string subject = Helpers.SubjectFinder.find(query); List <string> tokens = new List <string>(); tokens.Add(subject); tokens.Add(findNextToken(db, subject)); while (tokens.Count < 15) { string nextToken = findNextToken(db, getLastTokens(tokens, 2)); if (nextToken == null) { break; } else { tokens.Add(nextToken); } } return(Helpers.Tokenizer.toString(tokens.ToArray())); }
private static string findNextToken(NcDBContext db, string[] previousTokens) { return(findNextToken(db, previousTokens[0], previousTokens[1])); }