Web2.0里面的Tags功能的实现

刚才看了看飞扬新锐的blog系统,发现使用的是zblog,里面有了现成的tags系统,今天找了一天的tags系统的实现总是不得要领。没有办法,下载zblog的源代码,开始研究一下了。

实现的方法为建立一个blog_tags表存储tags的信息,包括id,name和count and tagurl,以及以后可能用到的intro和其他的附加信息。另外的article表里面有一个tags属性,里面的值为{1}{2}之类的,这个里面1、2其实就是blog_tags表里面每个tags的id。想到添加blog文章的时候他们添加tag的时候估计是把用逗号或者其他分离的tag拿出来分别和blog_tags表比较看看存在了没有,若没有存在就添加,存在则tag的count +1.然后就是tags图的实现方法就是提取blog_tags表里面所有的记录(或者前n条),然后是标准的12px的字体上面根据热度(tag的count)调整字体的大小(12px+(count/2)px)。基本上所有的基于一个简单blog的tag系统就搞定了。不过还是有很多问题需要解决。

1、 如果是每次读取一片新文章的时候都要进行联合查表,现查询article表取出tag属性,在查询blog_tags表取出tags的名称等信息。这样可不可以在article里面直接就存放tag的名称,他的tag的url就直接简单的做tags.aspx?name=tagsname.这样有些方便,不过不知道可不可行。这样就不用联合查表了。

2、 用户tags少的时候用这种方法实现效率几乎不用考虑,如果做成一个成熟的,有几十万个tags的时候是不是还合适啊,速度怎么样啊。这个是个疑惑,没有经验只能凭空猜测了。

3、 Tag的产生可不可以不用输入,而是直接使用lucene.net来做,抽出来tags可能效果和效率更好一些,看了博客园一个兄弟的文章,感觉可行的同时有感觉是不是系统占用的资源更多了,服务器的压力更大了。

是不是有其他的办法,比如豆瓣那种大规模有几百万个tags的系统如何实现的tags系统呢,有没有兄弟给出一点意见呢。

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-8327973135959484&dt=1179465454390&lmt=1179465454&prev_fmts=468x60_as%2C160x600_as&slot=2&format=468x60_as&output=html&correlator=1179465453703&url=http%3A%2F%2Fwww.cnblogs.com%2Fjessezhao%2Farchive%2F2007%2F03%2F20%2F680520.html&ad_type=image&ref=http%3A%2F%2Frss.kayalulu.com%2F%25E5%258D%259A%25E5%25AE%25A2%25E5%259B%25AD-%25E9%25A6%2596%25E9%25A1%25B5%25E5%258E%259F%25E5%2588%259B.NET%25E5%258C%25BA%2F2007%2F03%2F19%2FWeb2.0%25E9%2587%258C%25E9%259D%25A2%25E7%259A%2584Tags%25E5%258A%259F%25E8%2583%25BD%25E7%259A%2584%25E5%25AE%259E%25E7%258E%25B0&cc=14&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency="allowtransparency"> <script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-8327973135959484&dt=1179465454437&lmt=1179465454&prev_fmts=468x60_as%2C160x600_as%2C468x60_as&slot=3&format=468x15_0ads_al_s&output=html&correlator=1179465453703&url=http%3A%2F%2Fwww.cnblogs.com%2Fjessezhao%2Farchive%2F2007%2F03%2F20%2F680520.html&ref=http%3A%2F%2Frss.kayalulu.com%2F%25E5%258D%259A%25E5%25AE%25A2%25E5%259B%25AD-%25E9%25A6%2596%25E9%25A1%25B5%25E5%258E%259F%25E5%2588%259B.NET%25E5%258C%25BA%2F2007%2F03%2F19%2FWeb2.0%25E9%2587%258C%25E9%259D%25A2%25E7%259A%2584Tags%25E5%258A%259F%25E8%2583%25BD%25E7%259A%2584%25E5%25AE%259E%25E7%258E%25B0&cc=14&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="468" scrolling="no" height="15" allowtransparency="allowtransparency">
<script type="text/javascript"> // </script>

Feedback

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 08:26 by henry
合理的定义索引,几十万或几百万的查询基本不是什么问题.
主要是控制好获取的数据量就可以了.

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 08:38 by huacn
这个简单呀
你把 用 12,55,128,95,27 这个东西再分成一个
ArticleTags表 来实现 文章表与 Tag表的多对多关联
字段如下:
id tagid articleid
1 5 12
2 15 125

如上面的表结构,这样处理起来就好多了

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 09:19 by shalala[匿名]
这样的文章放在首页,似乎……

# 我的Tags功能的实现[TrackBack]  回复  更多评论   

2007-03-20 09:31 by 夜瞳の小漫
看了jessezhao的Web2.0里面的Tags功能的实现(http://www.cnblogs.com/jessezhao/archive/2007/03/20/680520.html)。于是把...   查看原文

# 我的Tags功能的实现[TrackBack]  回复  更多评论   

2007-03-20 09:37 by 夜瞳の小漫
看了jessezhao的Web2.0里面的Tags功能的实现(http://www.cnblogs.com/jessezhao/archive/2007/03/20/680520.html)。于是把...   查看原文

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 10:32 by 一醉解千愁
如何实行tags,实际上是业务的问题,技术只是辅助.

对于大量的tags,比如youtube,个人认为他们是将tags分开进行保存,
对于具体的文章,他们有自己的tags属性,而对于全局来说又有专门的表用于存储tags的统计信息.

关键的就是冗余存储.

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 11:20 by JesseZhao
@huacn
多对多的关联表这个是应该实现

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 11:57 by GoGoSonny
TrackBack怎么用?

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 12:28 by 杨发达
冗余存储 没有错。
要想快,就要这样做 。

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 12:42 by JesseZhao
减轻服务器的压力,查询速度再快点,我看也就是只能冗余的存储了

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 12:43 by JesseZhao
大家还有没有其他的方面比较好的提出来

# re: Web2.0里面的Tags功能的实现[未登录]  回复  更多评论   

2007-03-20 15:11 by 1
www.duhaha.com 不看你吃很大的亏

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-20 23:04 by Jeffrey Zhao
冗余存储的确是个可行的办法。
不过这里做个缓存就可以了,几十万的Tag也不占什么内容。
其实一个大型应用,缓存实施的如何,并不亚于数据库设计的重要性。因为往往用户“查询”数据的次数会远远大于修改。

# re: Web2.0里面的Tags功能的实现  回复  更多评论   

2007-03-21 08:38 by yunhuasheng
@Jeffrey Zhao
@henry
感觉说的都有道理.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值