ClassSort.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:4k
- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Text;
- using System.Collections;
- /*
- ' 迅龙中文分类搜索引擎 v0.6
- '
- ' LGPL 许可发行
- '
- ' 宁夏大学 张冬 康彩 zd4004@163.com
- '
- ' 官网 http://blog.163.com/zd4004/
- */
- namespace XunLong.SortIt
- {
- /// <summary>
- /// 分类器
- /// </summary>
- public static class ClassSort
- {
- /// <summary>
- /// 记录分类数据 key = 主分类名称 val = arrlist
- /// </summary>
- private static Hashtable x = new Hashtable();
- /// <summary>
- /// 分类数据初始化
- /// </summary>
- /// <param name="path"></param>
- public static void Init(string path)
- {
- //1 读取目录下的所有 .XLS 文件
- // 文件名即为主分类名称 文件的内容为很多关键字
- x.Clear();
- char[] xa = {' ','n','r','t' };
- // 1 得到目录下的文件
- DirectoryInfo dir = new DirectoryInfo(path);
-
- // 2 遍历文件 读取数据压入
- foreach (FileInfo f in dir.GetFiles("*.XLS")) //遍历获得以xml为扩展名的文件
- {
- String name = f.Name; //name为该文件夹下的文件名称,如f.FullName为全名
- name = name.Substring(0, name.Length - 4);
- string data = getFileData(f.FullName);
- string[] datas = data.Split(xa);
- ArrayList na = new ArrayList();
- na.Clear();
-
- foreach (string a in datas)
- {
- if (a.Length > 0 & na.Contains(a) == false)
- {
- na.Add(a);
- }
- }
- x.Add(name, na);
- }
- }
- /// <summary>
- /// 自动分类器 按照匹配程度 确定数据主类别
- /// </summary>
- /// <param name="d">需要判断的原始队列</param>
- /// <returns>主类别</returns>
- public static string AutoSortIt(string d)
- {
- char[] xa = { ' ', 'n', 'r', 't' };
- string[] datas = d.Split(xa);
- // key = name val = 得分
- // Hashtable num = new Hashtable();
-
- //主类别名称
- string MainName = "";
-
- //最高得分
- int MainNum = 0;
- foreach (System.Collections.DictionaryEntry b in x)
- {
- ArrayList xb = (ArrayList)b.Value;
- int FEN = 0;
- foreach (string c1 in datas)
- {
- if (c1 == null | c1.Length==0)
- { }
- else
- {
- foreach (string c2 in xb)
- {
- if (c1.IndexOf(c2) > -1)
- {
- FEN = FEN + 1;
- }
- }
- }
- }
- if (MainNum <= FEN)
- {
- MainName = b.Key.ToString();
- MainNum = FEN;
- }
- // num.Add(b.Key, FEN);
-
- }
- return MainName;
- // ArrayList alstKeys = new ArrayList(ht.Keys);
- // alstKeys.Sort(); // 按字母排序
- }
- /// <summary>
- /// 读文件
- /// </summary>
- /// <param name="filename"></param>
- /// <returns></returns>
- private static string getFileData(string filename)
- {
- StreamReader reader = null;
- string data = string.Empty;
- try
- {
- reader = new StreamReader(filename, System.Text.Encoding.GetEncoding("gb2312"));
- data = reader.ReadToEnd();
- reader.Close();
- return data;
- }
- catch (IOException e)
- {
- Console.WriteLine(e.Message);
- }
- finally
- {
- if (reader != null)
- reader.Close();
- }
- return "";
- }
- }
- }