public void BuildSearchDb() { var cmd = new OleDbCommand("SELECT * FROM paragraphs", m_cnn); //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > (SELECT MAX(paragraphId) FROM words)"; //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > 42207"; //tieu bo last build search data //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > 4749"; //truong bo last build search data //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > 7723"; //trung bo last build search data //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > 16236"; //tuong ung bo last build search data //cmd.CommandText = "SELECT * FROM paragraphs WHERE ID > 12044"; //tang chi bo last build search data cmd.CommandText = ""; var rd = cmd.ExecuteReader(); var reg = new Regex(@"[\w]+(-\w+)*"); reg = new Regex(@"[\w]+"); var dict = new HashSet <string>(); var lst = new List <MyWord>(); var maxKeyLen = 0; myKey keygen = new myKey(); while (rd.Read()) { var titleId = Convert.ToUInt64(rd["titleId"]); var parId = Convert.ToUInt64(rd["ID"]); var parOrd = Convert.ToInt16(rd["ord"]); var mc = reg.Matches(Convert.ToString(rd["content"])); foreach (Match m in mc) { bool chk; var key = keygen.genKey2(m.Value, out chk); if (!chk) { Debug.WriteLine("{0} {1} {2} {3} {4}", titleId, parId, parOrd, m.Index, m.Value); } if (key.Length > maxKeyLen) { maxKeyLen = key.Length; } lst.Add(new MyWord() { content = m.Value, titleId = titleId, parId = parId, key = key, pos = m.Index }); dict.Add(key); } } rd.Close(); cmd.Dispose(); //insert to word tbl AddToSearchDb(dict, lst); }
//buid data public void init(List <string> items) { var reg = new Regex(@"[\w]+(-\w+)*"); reg = new Regex(@"[\w]+"); var dict = new HashSet <string>(); var lst = new List <MyWord>(); var maxKeyLen = 0; myKey keygen = new myKey(); int idx = 0; m_items = new List <string>(); foreach (string txt in items) { var mc = reg.Matches(txt); foreach (Match m in mc) { bool chk; var key = keygen.genKey2(m.Value, out chk); if (!chk) { Debug.WriteLine("{0} {1}", m.Index, m.Value); } if (key.Length > maxKeyLen) { maxKeyLen = key.Length; } lst.Add(new MyWord() { content = m.Value, parId = (UInt64)idx, key = key, pos = m.Index }); dict.Add(key); } idx++; m_items.Add(txt); } AddToSearchDb(dict, lst); }