来帮你up csdn 快不行了

解决方案 »

  1.   

    如何实现标签(tag)的高效查询
    效果如discuz的,看http://www.phpfirst.com/ 首页
    除了在主题显示相关tag外还要求能按tag相关主题数量和加入时间分别排序我的思路有两种
    一、
    在主题建一tags字段
    建立表tag如下
    tagid  编号
    tag 内容
    tagcount 计数
    tagtime 时间
    titileid 主题ID
    tags是用空格或,分割的多个单词,
    tag是唯一的
    titleid形如"1,3,4,6,8"的形式,储存主题id
    取出时用分割函数分成单词,titleid分成数组,用like查询
    这样每次发表主题都要更新tag,而且tag里的主题很多titleid就很大,查询很耗资源二、
    在主题建一tags字段
    建立表tag如下
    tagid  编号
    tag 内容
    titileid 主题ID
    建立表tagcount如下
    tagid  编号
    tag 内容
    tagcount 计数
    tagtime 时间tags是用空格或,分割的多个单词,titleid储存单个主题id
    tag可重复,美发表一个主题,更新一下tag和tagcount表内相应字段
    这样每次发表主题都要更新tag和tagcount表,需要查找主题时只要select 主题字段 from 主题表 where tag='$tag'
    大家帮我看看还有什麽更好的办法可以于我交流 QQ 9424106
      

  2.   

    参考下面两个tag插件:
    Ultimate Tag Warrior 
    Jerome’s Keywords Plugin图现成直接用,想研究就仔细看代码。
      

  3.   

    TAG的实现我一般通过另外放一个表。假定一个表示所有的帖子的列表,其中包含topicID用来标示一个帖子。那么我会再创建一个topic_tag表:
    tag | topicID并将tag+topicID作为主键。在插入数据时,可以用一个text控件,并将TAG用空格分隔。搜索时,如果要进行多TAG搜索,那么构造SQL时有一些技巧,需要用到group by和having子句。TOP TAG实现并不很难。只要count并排序即可。
      

  4.   

    你们的思路就是 建立一个tag表 然后tag表存tag和相关的信息id
    搜索的时候是在tag里where $a='tag' 查出id 再去信息表查出对应的来是吧
    楼上上上的 两种方法大同小异吧  每个tag存一个id跟一个tag存多个信息的tag效率应该差不多吧??  那么信息表里的tags字段感觉就多余了啊 存也好 搜索也好 都在tag表进行啊 我开始的想法就是信息表 id 跟tags tags是存该条信息的tag
    tag表也存tag 分开存 而且下次有人用相同的tag 弄个字段count+1 这样可以弄出热门tag
    我的tag表就不存入信息id 只是 存那个tag被使用了多少次
    搜索的时候直接在信息里按tags字段匹配 这样的话是不是比在tag里搜索出信息id 效率低
    毕竟信息表的内容比tag表多 
      

  5.   

    看这个帖子
    http://topic.csdn.net/u/20070727/15/f0009433-128f-4dc7-bf76-340e00f12bd2.html
      

  6.   

    那个帖子好象都是文章包含几个tagid 那么搜索的时候就是 tagid like 如果我直接在写tag进tag表的时候把文章id也写进去几个tag就写几条记录 搜索的时候直接 查tag表 tag=..
     
    这样的话比较耗空间 每一个文章乘以tag数  
      

  7.   

    发现一个恶心的问题 
    譬如一个文章有3个tag 
    那么tag里就会产生3个tag记录
    当修改的就恶心了 可能修改后是1个 或2个不等的tag了
    用update就麻烦了 难道修改的时候先删除以前的再把新的写进去
    但可能tag 没变  或者只是变位置 或是只变了1个
    删除重写感觉浪费了
      

  8.   

    "发现一个恶心的问题   
    譬如一个文章有3个tag   
    那么tag里就会产生3个tag记录 
    当修改的就恶心了   可能修改后是1个   或2个不等的tag了 
    用update就麻烦了   难道修改的时候先删除以前的再把新的写进去 
    但可能tag   没变     或者只是变位置   或是只变了1个 
    删除重写感觉浪费了"对,这是个实质性的问题
      

  9.   

    建立表tag如下 
    tagid     编号 (这个目前没有什么用处,可以不要,这是我的一个习惯)
    tag   内容 
    titileid   主题ID 
    建立表tagcount如下 
    tag   内容 
    tagcount   计数 
    tagtime   时间 
    tagcount主要是用来显示top100之类的页面,而且可以显示每个标签有多少主题
    在数据量很大时group   by和having会效率很慢,一般大型的程序宁愿允许冗余也要提高效率
    tagtime是为了显示最新标签用的
    对于修改目前没有想出好的办法,只有像你说得那样,当然你也可以用tagid修改,但是那样的话标签数量的增减就很难处理了
    还不如删了重建