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

本文探讨了ZBlog中Tags系统的实现方式,通过分析其数据库结构和查询机制,提出了几种优化方案,并讨论了高并发场景下的可能挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才看了看飞扬新锐的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系统呢,有没有兄弟给出一点意见呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值