ClassSort.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:4k
源码类别:

搜索引擎

开发平台:

C#

  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Collections;
  6. /*
  7.       '       迅龙中文分类搜索引擎  v0.6
  8.       '
  9.       '        LGPL  许可发行
  10.       '
  11.       '       宁夏大学  张冬 康彩  zd4004@163.com
  12.       ' 
  13.       '        官网 http://blog.163.com/zd4004/
  14.  */
  15. namespace XunLong.SortIt
  16. {
  17.     /// <summary>
  18.     /// 分类器
  19.     /// </summary>
  20.     public static class ClassSort
  21.     {
  22.         /// <summary>
  23.         ///  记录分类数据 key =  主分类名称  val = arrlist
  24.         /// </summary>
  25.         private static Hashtable x = new Hashtable();
  26.         /// <summary>
  27.         /// 分类数据初始化
  28.         /// </summary>
  29.         /// <param name="path"></param>
  30.         public static void Init(string path)
  31.         {
  32.            //1 读取目录下的所有 .XLS 文件 
  33.             // 文件名即为主分类名称   文件的内容为很多关键字
  34.             x.Clear();
  35.             char[] xa = {' ','n','r','t' };
  36.               // 1 得到目录下的文件
  37.             DirectoryInfo dir = new DirectoryInfo(path);
  38.        
  39.             // 2 遍历文件  读取数据压入
  40.             foreach (FileInfo f in dir.GetFiles("*.XLS"))   //遍历获得以xml为扩展名的文件   
  41.             {
  42.                 String name = f.Name;         //name为该文件夹下的文件名称,如f.FullName为全名  
  43.                 name = name.Substring(0, name.Length - 4);
  44.                 string data = getFileData(f.FullName);
  45.                 string[] datas = data.Split(xa);
  46.                 ArrayList na = new ArrayList();
  47.                 na.Clear();
  48.                 
  49.                 foreach (string a in datas)
  50.                 {
  51.                     if (a.Length > 0 & na.Contains(a) == false)
  52.                     {
  53.                         na.Add(a);
  54.                     }
  55.                 }
  56.                 x.Add(name, na);
  57.             }
  58.         }
  59.         /// <summary>
  60.         /// 自动分类器  按照匹配程度 确定数据主类别
  61.         /// </summary>
  62.         /// <param name="d">需要判断的原始队列</param>
  63.         /// <returns>主类别</returns>
  64.         public static string AutoSortIt(string d)
  65.         {
  66.             char[] xa = { ' ', 'n', 'r', 't' };
  67.             string[] datas = d.Split(xa);
  68.             // key = name  val = 得分
  69.            // Hashtable num = new Hashtable();
  70.           
  71.             //主类别名称
  72.             string MainName = "";
  73.             
  74.             //最高得分
  75.             int MainNum = 0;
  76.             foreach (System.Collections.DictionaryEntry b in x)
  77.             {
  78.                 ArrayList xb = (ArrayList)b.Value;
  79.                 int FEN = 0;
  80.                 foreach (string c1 in datas)
  81.                 {
  82.                     if (c1 == null | c1.Length==0)
  83.                     { }
  84.                     else
  85.                     {
  86.                         foreach (string c2 in xb)
  87.                         {
  88.                             if (c1.IndexOf(c2) > -1)
  89.                             {
  90.                                 FEN = FEN + 1;
  91.                             }
  92.                         }
  93.                     }
  94.                 }
  95.                 if (MainNum <= FEN)
  96.                 {
  97.                     MainName = b.Key.ToString();
  98.                     MainNum = FEN;
  99.                 }
  100.               //  num.Add(b.Key, FEN);
  101.             
  102.             }
  103.             return MainName;
  104.           //  ArrayList alstKeys = new ArrayList(ht.Keys);
  105.          //   alstKeys.Sort(); // 按字母排序 
  106.         }
  107.         /// <summary>
  108.         /// 读文件
  109.         /// </summary>
  110.         /// <param name="filename"></param>
  111.         /// <returns></returns>
  112.         private static string getFileData(string filename)
  113.         {
  114.             StreamReader reader = null;
  115.             string data = string.Empty;
  116.             try
  117.             {
  118.                 reader = new StreamReader(filename, System.Text.Encoding.GetEncoding("gb2312"));
  119.                 data = reader.ReadToEnd();
  120.                 reader.Close();
  121.                 return data;
  122.             }
  123.             catch (IOException e)
  124.             {
  125.                 Console.WriteLine(e.Message);
  126.             }
  127.             finally
  128.             {
  129.                 if (reader != null)
  130.                     reader.Close();
  131.             }
  132.             return "";
  133.         }
  134.     }
  135. }