文学网

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

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

文章内容php文本相似度计算修改时间:[2012/06/2709:41]阅读次数:[4258]发表者:[沩筱]今天在验证用户所发表文章是否已经存在于数据库,就想到了用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(),大家可以试试的。

提供的文章均由网友转载于网络,若本站转载中的文章侵犯了您的权益,请与本站管理员联系.
Copyright © 2006-2019 文学网_文学书籍_文学大全www.tj92.com All Rights Reserved.