[导入][导入][c#]Web开发中Tag的开发技巧
生活随笔
收集整理的這篇文章主要介紹了
[导入][导入][c#]Web开发中Tag的开发技巧
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://onewww.net/blog/article.asp?id=87
網(wǎng)站開發(fā)常用關(guān)鍵字(tag),一般需要獲得最多的被采用的Tag,也就是流行詞。
通常思路是將關(guān)鍵字tag保存到單獨(dú)表中,然后在其他表中根據(jù)一組id進(jìn)行對多個(gè)關(guān)鍵字進(jìn)行標(biāo)識(shí)。因?yàn)橐粋€(gè)文章可以選擇多個(gè)tag,查詢的時(shí)候頗為麻煩。
所以我在開發(fā)中利用了這樣的方法,當(dāng)然不見得多高明?:),分享下經(jīng)驗(yàn)。
將tag直接保存在文章的表中,如Tag字段,tag為“c#”和“.net”,則Tag字段值為“c#/.net”就是依/符號(hào)分割tag,這樣數(shù)據(jù)庫中保存的是字符串了。單文章顯示的時(shí)候可以直接分割成數(shù)組顯示,減少表的關(guān)聯(lián),提高了效率。
當(dāng)需要顯示最近流行詞的時(shí)候。
查詢所有的tag
select?tag?from?表
利用DataReader把輸出結(jié)果相加起來。然后根據(jù)分隔符轉(zhuǎn)化為字符串,剩下的就是對字符串進(jìn)行排序,根據(jù)tag重多少進(jìn)行。并返回重復(fù)的數(shù)量,見代碼。為方便查看,我都寫在了一個(gè)aspx頁面中了。
程序代碼
<%@?Page?Language="C#"?%>
<%@?Import?Namespace="System.Data"?%>
<%@?Import?Namespace="XXXX.BLL"?%>
<%@?Import?Namespace="XXXX.Model"?%>
<%@?Import?Namespace="XXXX.DBUtility"?%>
<script?runat="server">
????
????protected?string?stext;
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????StringBuilder?sb?=?new?StringBuilder();
????????using?(System.Data.SqlClient.SqlDataReader?rd?=?XXXX.DBUtility.SqlHelper.ExecuteReader(SqlHelper.ConnectionString,?System.Data.CommandType.Text,?"Select?Kinds?+?'/'?FROM?XXX",?null))
????????{
????????????while?(rd.Read())
????????????{
????????????????sb.Append(rd.GetString(0));
????????????}
????????}
????????stext?=?sb.ToString();
????????ToArrayBySort(ToArray(stext,?'/'));
????}
????
????
????///?<summary>
????///?將字符串根據(jù)分隔符轉(zhuǎn)化為數(shù)組
????///?</summary>
????///?<param?name="sourcestring">要轉(zhuǎn)化的字符串</param>
????///?<param?name="compart">分隔符</param>
????///?<returns></returns>
????public?ArrayList?ToArray(string?sourcestring,?char?split)
????{
????????CharEnumerator?ce?=?sourcestring.GetEnumerator();
????????StringBuilder?sb?=?new?StringBuilder();
????????ArrayList?slist?=?new?ArrayList();
????????
????????while?(ce.MoveNext())
????????{
????????????if?(ce.Current?!=?split)
????????????{
????????????????sb.Append(ce.Current);
????????????}
????????????else
????????????{
????????????????if?(string.Empty?==?sb.ToString())?continue;
????????????????slist.Add(sb.ToString());
????????????????sb.Remove(0,?sb.ToString().Length);
????????????}
????????}
????????return?slist;
????}
????public?class?myComparer?:?IComparer
????{
????????int?IComparer.Compare(Object?x,?Object?y)
????????{
????????????return?((new?CaseInsensitiveComparer()).Compare(((SortItem)y).Count,?((SortItem)x).Count));
????????}
????}
????
????public?class?SortItem
????{
????????private?string?itemname;
????????private?int?count;
????????public?SortItem()
????????{
????????}
????????public?string?ItemName
????????{
????????????get?{?return?itemname;?}
????????????set?{?itemname?=?value;?}
????????}
????????public?int?Count
????????{
????????????get?{?return?count;?}
????????????set?{?count?=?value;?}
????????}
????}
????public?System.Collections.Generic.IList<SortItem>?ToArrayBySort(ArrayList?slist)
????{
????????slist.Sort();
????????ArrayList?sortList?=?new?ArrayList();
????????foreach?(object?obj?in?slist)
????????{
????????????SortItem?sItem?=?new?SortItem();
????????????sItem.ItemName?=?obj.ToString();
????????????sItem.Count?=?1;
????????????if?(sortList.Count?==?0)?{?sortList.Add(sItem);?continue;?}
????????????if?(obj.ToString()?==?((SortItem)sortList[sortList.Count?-?1]).ItemName)
????????????{
????????????????sItem.Count?=?((SortItem)sortList[sortList.Count?-?1]).Count?+?1;
????????????????sortList.RemoveAt(sortList.Count?-?1);
????????????}
????????????sortList.Add(sItem);
????????}
????????myComparer?myCm?=?new?myComparer();
????????sortList.Sort(myCm);
????????System.Collections.Generic.IList<SortItem>?iList?=?new?System.Collections.Generic.List<SortItem>();
????????foreach?(object?obj?in?sortList)
????????{
????????????iList.Add((SortItem)obj);
????????????//Response.Write(((SortItem)obj).ItemName?+?"-"?+?((SortItem)obj).Count.ToString()?+?"<br?/>");
????????}
????????return?iList;
????}
</script>
文章來源:http://wengjinbao.cn/?tid=477
海浪空間 2007-10-18 09:59 發(fā)表評論
文章來源:http://www.cnblogs.com/wengjinbao/archive/2007/10/18/928539.html
網(wǎng)站開發(fā)常用關(guān)鍵字(tag),一般需要獲得最多的被采用的Tag,也就是流行詞。
通常思路是將關(guān)鍵字tag保存到單獨(dú)表中,然后在其他表中根據(jù)一組id進(jìn)行對多個(gè)關(guān)鍵字進(jìn)行標(biāo)識(shí)。因?yàn)橐粋€(gè)文章可以選擇多個(gè)tag,查詢的時(shí)候頗為麻煩。
所以我在開發(fā)中利用了這樣的方法,當(dāng)然不見得多高明?:),分享下經(jīng)驗(yàn)。
將tag直接保存在文章的表中,如Tag字段,tag為“c#”和“.net”,則Tag字段值為“c#/.net”就是依/符號(hào)分割tag,這樣數(shù)據(jù)庫中保存的是字符串了。單文章顯示的時(shí)候可以直接分割成數(shù)組顯示,減少表的關(guān)聯(lián),提高了效率。
當(dāng)需要顯示最近流行詞的時(shí)候。
查詢所有的tag
select?tag?from?表
利用DataReader把輸出結(jié)果相加起來。然后根據(jù)分隔符轉(zhuǎn)化為字符串,剩下的就是對字符串進(jìn)行排序,根據(jù)tag重多少進(jìn)行。并返回重復(fù)的數(shù)量,見代碼。為方便查看,我都寫在了一個(gè)aspx頁面中了。
程序代碼
<%@?Page?Language="C#"?%>
<%@?Import?Namespace="System.Data"?%>
<%@?Import?Namespace="XXXX.BLL"?%>
<%@?Import?Namespace="XXXX.Model"?%>
<%@?Import?Namespace="XXXX.DBUtility"?%>
<script?runat="server">
????
????protected?string?stext;
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????StringBuilder?sb?=?new?StringBuilder();
????????using?(System.Data.SqlClient.SqlDataReader?rd?=?XXXX.DBUtility.SqlHelper.ExecuteReader(SqlHelper.ConnectionString,?System.Data.CommandType.Text,?"Select?Kinds?+?'/'?FROM?XXX",?null))
????????{
????????????while?(rd.Read())
????????????{
????????????????sb.Append(rd.GetString(0));
????????????}
????????}
????????stext?=?sb.ToString();
????????ToArrayBySort(ToArray(stext,?'/'));
????}
????
????
????///?<summary>
????///?將字符串根據(jù)分隔符轉(zhuǎn)化為數(shù)組
????///?</summary>
????///?<param?name="sourcestring">要轉(zhuǎn)化的字符串</param>
????///?<param?name="compart">分隔符</param>
????///?<returns></returns>
????public?ArrayList?ToArray(string?sourcestring,?char?split)
????{
????????CharEnumerator?ce?=?sourcestring.GetEnumerator();
????????StringBuilder?sb?=?new?StringBuilder();
????????ArrayList?slist?=?new?ArrayList();
????????
????????while?(ce.MoveNext())
????????{
????????????if?(ce.Current?!=?split)
????????????{
????????????????sb.Append(ce.Current);
????????????}
????????????else
????????????{
????????????????if?(string.Empty?==?sb.ToString())?continue;
????????????????slist.Add(sb.ToString());
????????????????sb.Remove(0,?sb.ToString().Length);
????????????}
????????}
????????return?slist;
????}
????public?class?myComparer?:?IComparer
????{
????????int?IComparer.Compare(Object?x,?Object?y)
????????{
????????????return?((new?CaseInsensitiveComparer()).Compare(((SortItem)y).Count,?((SortItem)x).Count));
????????}
????}
????
????public?class?SortItem
????{
????????private?string?itemname;
????????private?int?count;
????????public?SortItem()
????????{
????????}
????????public?string?ItemName
????????{
????????????get?{?return?itemname;?}
????????????set?{?itemname?=?value;?}
????????}
????????public?int?Count
????????{
????????????get?{?return?count;?}
????????????set?{?count?=?value;?}
????????}
????}
????public?System.Collections.Generic.IList<SortItem>?ToArrayBySort(ArrayList?slist)
????{
????????slist.Sort();
????????ArrayList?sortList?=?new?ArrayList();
????????foreach?(object?obj?in?slist)
????????{
????????????SortItem?sItem?=?new?SortItem();
????????????sItem.ItemName?=?obj.ToString();
????????????sItem.Count?=?1;
????????????if?(sortList.Count?==?0)?{?sortList.Add(sItem);?continue;?}
????????????if?(obj.ToString()?==?((SortItem)sortList[sortList.Count?-?1]).ItemName)
????????????{
????????????????sItem.Count?=?((SortItem)sortList[sortList.Count?-?1]).Count?+?1;
????????????????sortList.RemoveAt(sortList.Count?-?1);
????????????}
????????????sortList.Add(sItem);
????????}
????????myComparer?myCm?=?new?myComparer();
????????sortList.Sort(myCm);
????????System.Collections.Generic.IList<SortItem>?iList?=?new?System.Collections.Generic.List<SortItem>();
????????foreach?(object?obj?in?sortList)
????????{
????????????iList.Add((SortItem)obj);
????????????//Response.Write(((SortItem)obj).ItemName?+?"-"?+?((SortItem)obj).Count.ToString()?+?"<br?/>");
????????}
????????return?iList;
????}
</script>
文章來源:http://wengjinbao.cn/?tid=477
海浪空間 2007-10-18 09:59 發(fā)表評論
文章來源:http://www.cnblogs.com/wengjinbao/archive/2007/10/18/928539.html
轉(zhuǎn)載于:https://www.cnblogs.com/xiaozhuoyun/archive/2007/10/19/930838.html
總結(jié)
以上是生活随笔為你收集整理的[导入][导入][c#]Web开发中Tag的开发技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Java实现的植物大战僵尸游戏
- 下一篇: 《计算机网络 第七版》读后感