自认为我做的还是不错的。
首先清除所有“关注”“顶”之类的东西,用关键词搜索删除就可以了。比较慢,而且删不了多少东西。
使用压缩字段的方式:对于文本,容量越大,压缩的时候压缩比就越大。如果单个帖子压缩,效果并不是太明显。所以我采用了把同一篇帖子和它的回复放在一起来压缩的方式。将一篇帖子和回复所有必要的信息用XML的方式联合成一篇文章,然后用zip或者bzip算法压缩后放到数据库里。通过这个方法,把原来超过1G的access数据库(未压缩的字段)压到了400M。
这样带来的一个问题是没有办法搜索了。大家也知道,如果在access里使用like的方法搜索,对于这个数据库是绝对不可能的,即使只搜索标题,也慢的要死,不管你怎么优化算法。所以,还是要从根本上解决问题。我使用了nLucene全文检索库,在压缩数据库之前,把所有的文章和回复做成全文检索的索引。索引和数据库是完全独立的。索引文件也很大,占用了300多M。不过这样带来的好处就是,搜索的速度跟google一样了。而且对中文的支持也没有任何问题。
点击搜索或者点击一个帖子的标题的时候,(标题要保留一份没有压缩的),读取压缩过的字段,解压以后使用xslt的方式显示或者解析XML然后生成HTML来显示,速度上基本没有延迟感。而且这套系统还可以快递移植成asp.net的网页程序,提供全文检索的服务。
300多M的索引文件可以不提供下载,而是提供一个小工具,自己下载了数据库以后用这个工具自己生成索引文件就可以了。生成一次索引文件大约要花费6个小时左右(XP1700+,512M内存)。数据库和索引再用RAR压缩一下,可以达到500M的总大小。
当然,这就对离线浏览器有要求了。我是用vb.net写的。不知道delphi.net是否支持nLucene。