예제 #1
0
    /// <summary>
    /// ����������
    /// </summary>
    public void Sort(SegList list)
    {
        int max = 0;
        for (int i = 0; i < list.Count - 1; ++i)
        {
            max = i;
            for (int j = i + 1; j < list.Count; ++j)
            {

                string str1 = list.GetElem(j).ToString();
                string str2 = list.GetElem(max).ToString();
                int l1;
                int l2;
                if (str1 == "null")
                    l1 = 0;
                else
                    l1 = str1.Length;

                if (str2 == "null")
                    l2 = 0;
                else
                    l2 = str2.Length;

                if (l1 > l2)
                    max = j;
            }
            object o = list.GetElem(max);
            list.SetElem(max, list.GetElem(i));
            list.SetElem(i, o);
        }
    }
예제 #2
0
    /// <summary>
    /// 输出词列表
    /// </summary>
    public void OutWords()
    {
        IDictionaryEnumerator idEnumerator1 = htWords.GetEnumerator();

        while (idEnumerator1.MoveNext())
        {
            IDictionaryEnumerator idEnumerator2 = ((Hashtable)idEnumerator1.Value).GetEnumerator();
            while (idEnumerator2.MoveNext())
            {
                SegList aa = (SegList)idEnumerator2.Value;
                for (int i = 0; i < aa.Count; i++)
                {
                    Console.WriteLine(idEnumerator1.Key.ToString() + idEnumerator2.Key.ToString() + aa.GetElem(i).ToString());
                }
            }
        }
    }
예제 #3
0
    /// <summary>
    /// 按长度排序
    /// </summary>
    public void Sort(SegList list)
    {
        int max = 0;

        for (int i = 0; i < list.Count - 1; ++i)
        {
            max = i;
            for (int j = i + 1; j < list.Count; ++j)
            {
                string str1 = list.GetElem(j).ToString();
                string str2 = list.GetElem(max).ToString();
                int    l1;
                int    l2;
                if (str1 == "null")
                {
                    l1 = 0;
                }
                else
                {
                    l1 = str1.Length;
                }

                if (str2 == "null")
                {
                    l2 = 0;
                }
                else
                {
                    l2 = str2.Length;
                }

                if (l1 > l2)
                {
                    max = j;
                }
            }
            object o = list.GetElem(max);
            list.SetElem(max, list.GetElem(i));
            list.SetElem(i, o);
        }
    }
예제 #4
0
    /// <summary>
    /// 对加载的词典排序并重新写入
    /// </summary>
    /// <param name="Reload">是否重新加载</param>
    public void SortDic(bool Reload)
    {
        DateTime     start = DateTime.Now;
        StreamWriter sw    = new StreamWriter(DicPath, false, System.Text.Encoding.UTF8);

        IDictionaryEnumerator idEnumerator1 = htWords.GetEnumerator();

        while (idEnumerator1.MoveNext())
        {
            IDictionaryEnumerator idEnumerator2 = ((Hashtable)idEnumerator1.Value).GetEnumerator();
            while (idEnumerator2.MoveNext())
            {
                SegList aa = (SegList)idEnumerator2.Value;
                aa.Sort();
                for (int i = 0; i < aa.Count; i++)
                {
                    if (aa.GetElem(i).ToString() == "null")
                    {
                        sw.WriteLine(idEnumerator1.Key.ToString() + idEnumerator2.Key.ToString());
                    }
                    else
                    {
                        sw.WriteLine(idEnumerator1.Key.ToString() + idEnumerator2.Key.ToString() + aa.GetElem(i).ToString());
                    }
                }
            }
        }
        sw.Close();

        if (Reload)
        {
            InitWordDics();
        }

        TimeSpan duration = DateTime.Now - start;

        m_EventTime = duration.TotalMilliseconds;
    }
예제 #5
0
    /// <summary>
    /// ���ش��б�
    /// </summary>
    public void InitWordDics()
    {
        DateTime start = DateTime.Now;
        if (GetCache("jcms_dict") == null)
        {
            htWords = new Hashtable();
            Hashtable father = htWords;
            Hashtable forfather = htWords;

            string strChar1;
            string strChar2;

            StreamReader reader = new StreamReader(DicPath, System.Text.Encoding.UTF8);
            string strline = reader.ReadLine();

            SegList list;
            Hashtable child = new Hashtable();

            long i = 0;
            while (strline != null && strline.Trim() != "")
            {
                i++;
                strChar1 = strline.Substring(0, 1);
                strChar2 = strline.Substring(1, 1);
                if (!htWords.ContainsKey(strChar1))
                {
                    father = new Hashtable();
                    htWords.Add(strChar1, father);
                }
                else
                {
                    father = (Hashtable)htWords[strChar1];
                }

                if (!father.ContainsKey(strChar2))
                {
                    list = new SegList();
                    if (strline.Length > 2)
                        list.Add(strline.Substring(2));
                    else
                        list.Add("null");
                    father.Add(strChar2, list);
                }
                else
                {
                    list = (SegList)father[strChar2];
                    if (strline.Length > 2)
                    {
                        list.Add(strline.Substring(2));
                    }
                    else
                    {
                        list.Add("null");
                    }
                    father[strChar2] = list;
                }
                htWords[strChar1] = father;
                strline = reader.ReadLine();
            }
            try
            {
                reader.Close();
            }
            catch
            { }
            SetCache("jcms_dict", htWords);
        }
        htWords = (Hashtable)GetCache("jcms_dict");

        alNoise =  LoadWords(NoisePath, alNoise);
        alNumber = LoadWords(NumberPath, alNumber);
        alWord =   LoadWords(WordPath, alWord);
        alPrefix = LoadWords(PrefixPath, alPrefix);

        TimeSpan duration = DateTime.Now - start;
        m_EventTime = duration.TotalMilliseconds;
    }
예제 #6
0
    /// <summary>
    /// 加载词列表
    /// </summary>
    public void InitWordDics()
    {
        DateTime start = DateTime.Now;

        if (GetCache("jcms_dict") == null)
        {
            htWords = new Hashtable();
            Hashtable father    = htWords;
            Hashtable forfather = htWords;

            string strChar1;
            string strChar2;

            StreamReader reader  = new StreamReader(DicPath, System.Text.Encoding.UTF8);
            string       strline = reader.ReadLine();

            SegList   list;
            Hashtable child = new Hashtable();

            long i = 0;
            while (strline != null && strline.Trim() != "")
            {
                i++;
                strChar1 = strline.Substring(0, 1);
                strChar2 = strline.Substring(1, 1);
                if (!htWords.ContainsKey(strChar1))
                {
                    father = new Hashtable();
                    htWords.Add(strChar1, father);
                }
                else
                {
                    father = (Hashtable)htWords[strChar1];
                }

                if (!father.ContainsKey(strChar2))
                {
                    list = new SegList();
                    if (strline.Length > 2)
                    {
                        list.Add(strline.Substring(2));
                    }
                    else
                    {
                        list.Add("null");
                    }
                    father.Add(strChar2, list);
                }
                else
                {
                    list = (SegList)father[strChar2];
                    if (strline.Length > 2)
                    {
                        list.Add(strline.Substring(2));
                    }
                    else
                    {
                        list.Add("null");
                    }
                    father[strChar2] = list;
                }
                htWords[strChar1] = father;
                strline           = reader.ReadLine();
            }
            try
            {
                reader.Close();
            }
            catch
            { }
            SetCache("jcms_dict", htWords);
        }
        htWords = (Hashtable)GetCache("jcms_dict");

        alNoise  = LoadWords(NoisePath, alNoise);
        alNumber = LoadWords(NumberPath, alNumber);
        alWord   = LoadWords(WordPath, alWord);
        alPrefix = LoadWords(PrefixPath, alPrefix);

        TimeSpan duration = DateTime.Now - start;

        m_EventTime = duration.TotalMilliseconds;
    }