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系统呢,有没有兄弟给出一点意见呢。

posted on 2007-03-20 07:35 JesseZhao 阅读(4868) 评论(19) 编辑 收藏

评论

#1楼  回复 引用 查看   

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

#2楼  回复 引用 查看   

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

如上面的表结构,这样处理起来就好多了
2007-03-20 08:38 | huacn      

#3楼  回复 引用   

这样的文章放在首页,似乎……

#4楼  回复 引用 查看   

如何实行tags,实际上是业务的问题,技术只是辅助.

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

关键的就是冗余存储.
2007-03-20 10:32 | 一醉解千愁      

#5楼[楼主]  回复 引用 查看   

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

#6楼  回复 引用 查看   

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

#7楼  回复 引用 查看   

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

#8楼[楼主]  回复 引用 查看   

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

#9楼[楼主]  回复 引用 查看   

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

#10楼  回复 引用   

*** 不看你吃很大的亏
2007-03-20 15:11 | 1[未注册用户]

#11楼  回复 引用 查看   

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

#12楼  回复 引用 查看   

@Jeffrey Zhao
@henry
感觉说的都有道理.
2007-03-21 08:38 | yunhuasheng      

#13楼  回复 引用   

我要知道tag是如何做出来的
2007-09-24 13:15 | Franklin[未注册用户]

#14楼  回复 引用 查看   

非常有用的东西。做个标记。
2007-12-28 21:18 | woog      

#15楼  回复 引用   

用lucene之类的做分词tag 证明你根本还没有理解tag的用处
tag的最大一点用处就是内容无关性
2008-04-15 14:08 | Lisces[未注册用户]

#16楼  回复 引用   

@一醉解千愁
2008-07-10 09:28 | 1111[未注册用户]

#17楼  回复 引用   

@Lisces
与内容无关,还用得着标签嘛?
2008-07-10 09:33 | atlas[未注册用户]
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 680520 WKMLYWnhzeY=

导航

公告



=> 稳健 扎实 务实 创新 <=


昵称:JesseZhao
园龄:5年2个月
粉丝:42
关注:28

搜索

 
 

常用链接

我的标签

随笔分类(197)

随笔档案(176)

相册

朋友博客

网站链接

积分与排名

  • 积分 - 338257
  • 排名 - 202

最新评论

阅读排行榜

评论排行榜

推荐排行榜