相关性统计、排序

 昨天在项目中遇到需要进行全文搜索关键字出现次数,并且进行排序,返回排序后的Guid的问题。
问题最终解决,现总结一下:
这里有两个关键点
1:全文搜索,并统计关键字出现的次数。
2:使用排序算法对List<T>进行排序。

最终的解决办法如下:
1.搜索
// 关键字数组
List<string> tmpSL = "此处为关键字转换方法";
// 被搜索字符串
string tmpContent = "";
// 搜索字符串
string tmpKey = "";
// 匹配关键字总数
int total = 0;
// 关键字  支持多个关键字
for (int i = 0; i < tmpSL.Count; i++)
{
    tmpKey = tmpSL[i].ToString();
    if(
    // 进行匹配
    for (string tmpStr = tmpContent; tmpStr != null && tmpStr.Length >= tmpKey.Length; )
    {
         if (tmpStr.IndexOf(tmpKey) == 0)
         {
             total++;
         }
         tmpStr = tmpStr.Substring(1);
    }
}

2. 对List<T>排序
系统有范型的排序。但都是对一个参数的,在这里要把相对应的Guid也传进去。
最终使用冒泡排序,进行改造。
假如说有类,
Class T
{
     private string guid;
     public string Guid
     {
         get { return guid; }
         set { guid = value; }
     }
     private int total;
     public int Total
     {
         get { return total; }
         set { total = value; }
     }
     public T(string Guid, int Total)
     {
         guid = Guid;
         total = Total;
     }

}
public void Sort(List<T> tmpList)
{
    int i, j;
    List<T> temp = new List<T>();
    bool done = false;
    j = tmpList.Count;
    while ((j > 1) && (!done))
    {
        done = true;
        for (i = tmpList.Count - 1; i > tmpList.Count - j; i--)
        {
     //判断大小
            if (tmpList[i].Total > tmpList[i - 1].Total)
            {
                 done = false;
                 temp.Add(new T(tmpList[i].Guid, tmpList[i].Total));

                 tmpList[i].Guid = tmpList[i - 1].Guid;
                 tmpList[i].Total = tmpList[i - 1].Total;

                 tmpList[i - 1].Guid = temp[0].Guid;
                 tmpList[i - 1].Total = temp[0].Total;

                 temp.RemoveAt(0);
            }
        }
        j--;
    }
}

以上代码可能并不能直接执行,只需稍加改造即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值