php文本相似度计算-PHP 开发-编程笔记-幽默笑话

您现在的位置:诗歌期刊 > 儿童文学 64浏览

php文本相似度计算-PHP 开发-编程笔记-幽默笑话

文章内容php文本相似度计算修改时间:[2012/06/2709:41]阅读次数:[4250]发表者:[沩筱]今天在验证用户所发表文章是否已经存在于数据库,就想到了用PHP计算两字符串的相似度来处理,于是就在数据入库前进行了处理。 用到函数similar_text()代码如下:$ret=0;$r=$db-select("selectcontentfromarticle");foreach($ras$val){similar_text($message,$val[content],$ret);if($ret=50){echo"文章已经存在,请不要重复发表";break;}}加入上面代码后运行,发现总是超时。

于是在代码中打印重要语句的执行时间时间大概是这样的:查询数据库是秒,比较一条相似度是秒。

后来计算了一下,也就300条记录,PHP默认执行的30秒时间就不够了。

何况数据库存的文件不是300,可能是3000,3万条。 看来是不能添加这一功能了。

如果非要加上这一功能,也只能放在后台实现了。 在后台把PHP执行时间设长一点,就是用户发表的文章再慢慢去查询。 不过这样也不现实,随着数据越来越多,执行时间越来越长。

下面是该函数的详细信息:similar_text(PHP4,PHP5)similar_text—计算两个字符串的相似度说明intsimilar_text(string$first,string$second[,float$percent])两个字符串的相似程度计算依据Oliver[1993]的描述进行。

注意该实现没有使用Oliver虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。

也请注意,该算法的复杂度是O(N**3),N是最长字符串的长度。

参数first第一个字符串。

second第二个字符串。 percent通过引用方式传递第三个参数,similar_text()将计算相似程度百分数。

返回值返回在两个字符串中匹配字符的数目。

最后介绍执行速度更快的函数levenshtein(),大家可以试试的。