荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: TurboZV.bbs@bbs.uestc.edu.cn (重构中……), 信区: InstallBBS
标  题: 给你的Firebird 2000增加id/reid吧
发信站: 一网深情 (Mon Dec 15 16:12:44 2003)
转信站: SZU!news.ccie.net.cn!news.uestc.edu.cn!UESTC

firebird 2000中同主题的判断是按照title来的,效率低下.

所以很有必要引入id/reid

说明一下:
id   : 版内帖子的唯一标识, 值为帖子的发表时间.
       你可以这样理解: id = atoi&(filename[2])

reid : 或者叫topic_id or group_id,就是同主题第一篇帖子的id
       对于第一篇主题帖子,id == reid

(如果不是web对层次结构的需要,我们不用详细区分reid 和 gid, tid)

第一步, 我们要给bbsd加入id/reid..

1) bbsd : 添加的方法很简单,直接修改 struct.h中的 fileheader 结构
(注意对齐,不要超出了)
在bbs.c中加入 int current_article_reid = 0; 作为全局变量
read_post函数中,加入 current_article_reid = fileinfo->reid;
post_article函数中加入
    postfile.id = now;
    if (mailid == NULL)  // 对信件不好处理,就作为一个单独的主题吧
        postfile.reid = now;
    else
        postfile.reid = current_article_reid;
post_cross函数中加入
    postfile.id = now;
    postfile.reid = now;   // 肯定是新帖


2) webbbs (nju 0.9 系列)
BBSLIB.inc中
post_article(...., int reid)
然后判断一下 if (reid <= 0) reid = id;

在bbspst.c中,引入<input type='hidden' name='reid' value='xxxx'>
当然bbstcon.c中,也要加入reid来确认主题

3)mail2bbs, getnews 都设置id==reid把~

4)innbbsd, 这个比较麻烦
我想了几个办法
由bbsd维护一个/boards/%s/.GROUP的文件
存储(id, ent, title)三元组, 只是主题帖子才存入.GROUP
ent是该帖子在.DIR中的相对参考位置(由于del文章,实际位置<=这个数值) 以后可能用到

修改很简单,在receive_article.c 中
加个unsigned int get_reid(char *board, char *the_title, int default_id)函数
从.GROUP文件中搜索match the_title的reid, 没有找到则return default_id,且把
(default_id, the_title加入 .GROUP)

查找是个大问题, 虽然.GROUP保存的只是主题帖,但是搜索还是要讲究策略的
a)直接来,从第一个开始顺序搜索
b)把.GROUP按title排序,这里二分查找
c)只搜索.GROUP最后的n篇(不可靠解)
(这里大家有什么好办法?)


第二步,我们已经确认每篇帖子都有id/reid属性了,现在我们拿他们来改善bbs
1)全局上,丢弃那些 if (strncmp(title, "Re: ", 4) == 0) 之类的恶心代码把~ //sigh

2)修改bbs.c 找到那个特别寒的 readdoent, 大刀阔斧的改吧~
  丢弃setqtitle(),ReadPost, ReadReply, 改成reply_reid吧

3)修改thread.c 现在可以出现相同标题,但不同主题的帖子了:)

4)修改read.c 主题阅读更准确了,而且提高了速度
  不过那个search_articles的参数看起来太BT了,慢慢改把~~

PS: 对于mail不好解决, 所以我暂时还是保留的按照标题来同主题阅读, 上下搜索
    不知道各位大虾有何看法?


--
    今生最浪漫的事            ● /○\
    就是和你一起慢慢变老…… /■\/■\
═╪═╪═╪═╪═╪═╪═╪= ||  <|  ╪═╪
※ 来源:·一网深情 bbs.uestc.edu.cn·[FROM: Heaven]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店