示例#1
0
        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);
        }
示例#2
0
        //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);
        }