近期评论

如何清除大量垃圾评论

一段时间以来,随着我的网站越来越受欢迎,访问量越来越大,活跃用户和评论也越来越多。

但是也带来了一些问题,比如数据库性能瓶颈,大量垃圾评论。


垃圾评论是很多博主烦恼的问题,我的网站目前一个月不清理,一共会有60000条左右的评论。下面来谈谈我是怎么解决垃圾评论问题的。

首先wordpress本来带有评论审核,清理,过滤功能,但是这只是基本的,太简单。

比如只能简单过滤单个字符,不能过滤特殊规则的垃圾评论(for example:过滤多个超链接)。

我的清理方法是结合wordpress的基本功能,然后用sql语句直接操纵数据库来清理。

下面是基本步骤:
1、启用评论审核功能。
包含1个以上的超链接就要审核。因为很多垃圾评论都是带有大量的超链接。
我非常理解一个热心的网友看到不一个不错的博客时很想留下自己的博客地址,希望互相交流。this is very good!
所以我一般不要求严格填写邮箱地址,网站地址。谁都可以很容易的留言。

2、用上面方式来管理评论时,肯定会有大量的垃圾评论。怎么过滤呢?
首先搞清楚垃圾评论的几个特征,如下图:


a、内容比较长,一般都会超过1000byte;
b、来有2个以上超链接;
c、其他语言,尤其是日语,基本上都是垃圾评论。
d、评论最后一句没有按一定规律留下自己的网站,通常正常的评论结尾会带有这些字符(my blog|My webpage|my web-site|My site|my homepage|my website|my site),如下图:

所以这是个过滤垃圾评论的好办法。


首先介绍评论内容存放数据库哪里的。
wp_comments是wordpress存放所有评论的表,通常默认的表名称是wp_comments,看你安装wordpress指定什么前缀了,比如geektcp_comments。
comment_approved是表wp_comments的一个字段,用来存放评论显示状态。
comment_content也是wp_comments的一个字段,用来存放评论内容。垃圾评论的内容就存放在这里。

其他字段说明:
comment_approved 等于1:通过审核的评论
comment_approved 等于0:待审核的评论
comment_approved 等于trash: 回收站的评论
comment_approved 等于spam : 垃圾评论


下面介绍下几个常用的sql语句:
清除所有待审的评论:

delete FROM `wp_comments` WHERE `comment_approved` ='0';

清除所有垃圾评论:
delete FROM `wp_comments` WHERE `comment_approved` ='spam';

清除所有回收站评论:
delete FROM `wp_comments` WHERE `comment_approved` ='trash';

清除待审,垃圾,回收站评论:
delete FROM `wp_comments` WHERE `comment_approved` NOT LIKE '1';


显然上面那么简单的清楚评论会干掉很多正常的留言。so,how can I do?

1、首先是清楚长度很长的垃圾评论,基本超过2000字节的内容我都会清除:
delete from `wp_comments` WHERE `comment_approved` ='0' and length(comment_content)>2000 ;

2、清除带有超链接http://字符的评论内容。
首先查询有多少条评论内容长度超过1500字节,并且带有1个以上超链接的评论:

select *  FROM `wp_comments`  WHERE `comment_approved` ='0' and length(comment_content)>1500 and comment_content regexp '(http://)+';

然后把这些记录移到垃圾评论里面,主要是为了通过web界面查看是否过滤成功:
update `wp_comments` set `comment_approved` ='trash' WHERE `comment_approved` ='0' and length(comment_content)>1500 and comment_content regexp '(http://)+';

最后通过wordpress的评论功能来查看是否大部分都是垃圾评论,如果是就清空掉。可以直接使用web界面的清空功能,如果有很多垃圾评论,最好用sql语句清空:
delete FROM `wp_comments` WHERE `comment_approved` ='trash';


3、把评论中我觉得是在正常的评论都分离到垃圾评论里面。
查询带有这些字符的所有评论(my blog|My webpage|my web-site|My site|my homepage|my website|my site),都认为是正常的,可以通过审核的:

select count(*) FROM `wp_comments`  WHERE `comment_approved` ='0' and comment_content regexp '(my blog|My webpage|my web-site|My site|my homepage|my website|my site)+'; 

然后把这些评论移动到垃圾评论里面,主要是为了通过web后来方便的检查确认这些评论是否是正常的评论:
update `wp_comments` set `comment_approved` ='trash'   WHERE `comment_approved` ='0' and comment_content regexp '(my blog|My webpage|my web-site|My site|my homepage|my website|my site)+'; 


最后把这些评论都通过审核,这时网站上就可以正常显示这些评论了:
update `wp_comments` set `comment_approved` ='1'   WHERE `comment_approved` ='trash' and comment_content regexp '(my blog|My webpage|my web-site|My site|my homepage|my website|my site)+'; 

4、最后还剩下很多评论在审核栏目里面,大部分是垃圾评论,就直接清除掉了。
delete FROM `wp_comments` WHERE `comment_approved` ='0';


这样,大部分垃圾评论都被我清除了,大部分正常评论都显示在网站上了。

I think you can do it,too!

3,374 Responses to “如何清除大量垃圾评论”