LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1395|回复: 16

强烈建议加强论坛搜索性能和功能,请各位版主和管理员进来看一下

[复制链接]
发表于 2003-5-26 10:55:15 | 显示全部楼层 |阅读模式
经常来linuxsir,因为它管理的好,帖子精华多,气氛也好。

我想谈一谈我们这里最主要的工具:搜索

越来越觉得这个功能是最主要的了,不管是对新手还是老手。因为linuxsir是纯粹的论坛形式,没有专门的文章版块,而以合并/精华/综述贴形式来归纳主题。实际上每个人来这里要找自己关心的资源和主题的时候,最有效也是通过搜索的办法。另外每天来找自己发过和回复的帖子的更新情况,也是通过查自己用户名的形式。

目前感觉搜索模块的问题

1. 性能上的。

    当搜索单个关键字时,还没什么问题,但是搜索两个以上的关键字,能感觉到服务器的操作明显变满,几乎每次这种搜索都是返回 Fatal error: Maximum execution time of 30 seconds exceeded in /opt/apache/htdocs/bbs/search.php on line 400 的超时操作。只能限定只在主题内搜索来减少服务器段运算,
这使得很多需求无法实现。

    比如,想看一下有没有讨论怎样自己制作rpm包这样的主题,如果直接搜索“rpm”或者“软件包”的单个关键字是不行的,因为显然很多软件安装的帖子都会涉及到这个词,如果只搜索“软件包制作”那必然会漏掉很多有用贴,甚至根本搜不到。我们当然希望使用“rpm AND 制作”或者“自己 AND rpm”这样的搜索,但是这种情况下linuxsir的服务器往往不能返回结果,超时。这种情况我已经遇到很多了,不知道别的兄弟有没有感觉,好像是和浏览器没有什么关系的,我试过很多了,平台也是无关的。

2. 功能上的。

    必要性:这个搜索功能主要还是基于通用论坛自带的搜索的,现在linuxsir人气越来越旺,帖子越来越多,有必要把搜索功能进一步加强一下。我很理解管理员和版主,他们很辛苦,而且大量的精力要放在服务器维护和版区维护上。但是,请大家想一想,如果搜索功能加强了,人们找到有效帖子的几率就会增大,那样带来的是一系列的好处,比如重复发贴减少,重复问题减少,以致服务器的负荷减少,也许有更多的资源可以来执行搜索等功能。

    需求和建议:我想搜索功能加强的主要途径是加强搜索的描述,让用户在进行搜索前进行更精确的描述和限定,这是有效减轻服务器负荷的一个办法。例如加上只在精华区搜索 等功能。另外一个办法是加入管道集合操作,比如在搜索结果中进行第二次搜索:在结果中再查/在结果中去除 等这样的搜索(可以加在搜索结果的返回页面顶部),这个功能从实现上可能是相对简单一点的,而且实用有效,又能减轻服务器一次响应的等待时间。建议管理员先考虑添加这个功能。


在论坛功能的建设上,建议采取先发征集问题的帖子来系统描述用户需求的方式,大家可以就搜索问题讨论一下,看看还有什么想法。如果要编程序也可以请大家一起讨论,形成志愿小组再另外到下面单独讨论细节(以安全起见)。

这个问题其实涉及论坛使用的效率,有的初学者可能搜不到问题找不到答案就放弃了,或者不恰当的发贴(我也有过)。北南兄花了好多精力回贴告诉我们其实帖子在什么什么地方有,请参考等等,有的不是兄弟们不仔细看,是太难找了。

那个规范大家发贴的公告是很有意义的,而搜索之类的功能则是配合它实施的真正工具,很有必要让兄弟们掌握有效的搜索方法,快速找到自己有效的信息。

引用北南兄以前的签名“正确发贴,也是对他人的帮助”,而有效找贴就是这个正确发贴的前提之一。

此外,还有一些我们不熟悉或者不了解的考虑可能影响着搜索功能的建设,如安全性方面的考虑,这就请管理员们讨论一下了。

不是论坛没有帖子,而是我们缺少发现 ;)
发表于 2003-5-26 11:17:06 | 显示全部楼层
qinpu兄所说的情况事实存在,也就是说搜索中只能是以单个关健字来搜索。这样的搜索是极其有限的。因为搜索的问题,咱们已经升级过一次论坛程序。看来这个程序也不是咱们想的那么好。

我来简单的说一下这个搜索:现在论坛的搜索是直接在数据库中的搜索,而不是集于相应的索引。优点是在线人数少的时候,能提高效率,但很多人同时用搜索呢?这个搜索肯定就不行了。

另外,经过弟兄们试用,搜索还是比较弱,虽然也能搜索中文,但事实上,多条件以及用户名为关健字的搜索,经常会出现问题。有时大写的英文字母的用户名也不能在搜索中找到。


另外在测试中,发现论坛的BUG还是比较多,相对来说,这个版本还是不理想的版本。还有很多的问题需要解决。解决的问题的根本就是要升级论坛程序。现在也在着手准备中。升级之前就要测试各方面的情况,比如安全性,稳定性等。可能得需要一点时间,敬请大家期待。

如果找自己的帖子,就要按自己帖子下面的那个[放大镜],这样一下就找到了自己所发的帖子了。


多谢qinpu兄的指正和建议。
 楼主| 发表于 2003-5-26 11:27:15 | 显示全部楼层

期待中。。。

要是能基于某个cgi的论坛我们自己开发一个量身定做的就好了
把一些用不着的功能剪掉

关键是论坛更换后要能够平滑过渡原来的帖子和用户信息等数据才好
发表于 2003-5-26 11:35:25 | 显示全部楼层
期待中。。。

要是能基于某个cgi的论坛我们自己开发一个量身定做的就好了
把一些用不着的功能剪掉

关键是论坛更换后要能够平滑过渡原来的帖子和用户信息等数据才好


CGI的论坛程序,感觉不太好,因为他是基于文本的。不利于数据管理。LinuxSir在建坛初期就用的是CGI的,后来发现搜索时极为费力,费时,所以就换了php+Mysql的。
下面这个帖子就是从CGI转到MYSQL数据库损失的见证。那次转换数据,从总是来说,不算成功:

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=644

如果换论坛程序,可能咱们的损失也是非常大。不可能做到百分之百的没有一点问题。所以最好的办法是升级论坛程序。这样能把风险减少到最低限度。

不知道我说的有没有道理。。。。

请指正。
 楼主| 发表于 2003-5-26 12:49:28 | 显示全部楼层

北南兄说的是leoboard那种吧

要搜索的话还是要带SQL数据库的最好,不过MySQL的性能不是很强,可能论坛的性能跟,像咱们这样的论坛可能用postgre SQL或者Oracle可能合适一些。

只是想法而已,不过 MySQL 实现的实在太简单了,并不适合负荷较大的论坛,linuxsir 也许已经成长到需要更强的数据库性能支持的时候了。

如果可能的话,我建议把论坛数据库移植到 Oracle 上,可能会好一点,而且主要是自己移植数据不会丢,界面也不用变。
发表于 2003-5-26 16:42:29 | 显示全部楼层
如果可能的话,我建议把论坛数据库移植到 Oracle 上,可能会好一点,而且主要是自己移植数据不会丢,界面也不用变。


Oracle数据库,可能得一大笔费用,mysql的数据库是免费的,如果用Oracle,咱们可能得就论坛的程序也得重新写过。这方面可能花的力气更大一点。

现在咱们是自由论坛,经费方面也得考虑一下,如果移植可行,在Oracle数据库人人价格在咱们能接受的情况下,真得想办法移植,多谢兄弟指教。
发表于 2003-5-26 17:06:04 | 显示全部楼层
VBB的可移植性还是挺好的,我一位朋友这一段时间就在做这项工作,把他们公司的VBB的数据库接口改在Oracle的,汗!
不过以后开源在线换成postgre SQL的数据库就方便多了(不要自己处理了^_^)
 楼主| 发表于 2003-5-26 20:57:03 | 显示全部楼层

Oracle 不是有免费的么?

这俺不清楚,土了 ;) 性能上他是要好得多的。

PostgreSQL 也不错
发表于 2003-5-27 11:47:23 | 显示全部楼层
谁仔细读过vbb的代码?
没有读过就不要瞎猜原因,

首先来看看一看vbb search的实现,在任何数据库中,牵涉到大量文本的搜索都是不可能用简单的LIKE语句,通过关键字文章内直接寻找匹配的方式来实现的,因为当数据量大了之后这种方式注定效率极为底下。

VBB的代码通过了全文索引技术来解决这一问题(管理面板可以看见重建全文索引的选项),vbb的全文索引的实现通过以下步骤来实现:
1 按照空格和半角标点分割关键字(在这里vbb并没有考虑到中文的问题,中文同样按照空格和标点来划分关键字,本句话的建立见注一),如果太长则截断。
2 去除 the for 等英文常见单词
3 建立 关键字-帖子的索引。

在英文环境下,这种技术实现方式在很大程度上提高了搜索效率,比方说我们查找linux,通过查找索引就可以知道包含linux的帖子有那些。查找install 就可以知道包含 install的帖子有哪些,然后简单的取一个交集就可以知道同时包含linux和install的帖子有哪些了。
而通过参看注一,我们可以发现在这种索引方式下中文的搜索优化几乎不可实现,这也就是搜索效率低下的根本原因。


注一:按照VBB的算法,文中的那句话的索引将是这样的。
1-227501(属于常见关键字 会被去除)
按照空格和半角标点分割关键字-227501
在这里vbb并没有考虑到中文的问题,中文同样按照空格 -227501(太长了被截断,有可能还会截到半个字符导致乱码)
和标点来划分关键字,本句话的建立见注一 -227501
,如果太长则截断。-227501
发表于 2003-5-27 11:50:12 | 显示全部楼层
说句不客气的话,中国人写的论坛程序的数据结构和算法方面的考虑都比较一般,单单这个全文搜索引擎就没有看见过哪个国产的论坛深刻考虑过,真正写好了。国外的论坛因为没有考虑到中文的需求一般也不支持,恐怕只有一些搜索引擎和大型门户采用了合适的技术。所以说,想解决这个问题几乎是不可能的。

BTW:按道理说一些DB应该也内建有全文Index的功能,不知道究竟好不好用,也没有看见论坛用过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表