php – 使用MySQL检测垃圾邮件发送者
我看到越来越多的用户在我的网站上注册,只是向其他用户发送重复的垃圾邮件.我添加了一些服务器端代码来检测具有以下
mysql查询的重复消息:
SELECT count(content) as msgs_sent FROM messages WHERE sender_id = '.$sender_id.' GROUP BY content having count(content) > 10 该查询运行良好,但现在他们通过更改其消息中的一些charctersr来解决这个问题.有没有办法用MySQL检测这个或者我是否需要查看从MySQL返回的每个分组,然后使用PHP来确定相似性的百分比? 有什么想法或建议吗? 解决方法
全文匹配
您可以看一下类似于MATCH示例here的实现: mysql> SELECT id,body,MATCH (title,body) AGAINST -> ('Security implications of running MySQL as root') AS score -> FROM articles WHERE MATCH (title,body) AGAINST -> ('Security implications of running MySQL as root'); +----+-------------------------------------+-----------------+ | id | body | score | +----+-------------------------------------+-----------------+ | 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 | | 6 | When configured properly,MySQL ... | 1.3114095926285 | +----+-------------------------------------+-----------------+ 2 rows in set (0.00 sec) 所以对于你的例子,也许: SELECT id,MATCH (content) AGAINST ('your string') AS score FROM messages WHERE MATCH (content) AGAINST ('your string') AND score > 1; 请注意,要使用这些函数,您的内容列必须是FULLTEXT索引. 这个例子中得分是多少? 这是一个相关价值.它通过下面描述的过程计算:
从documentation页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |