PHP简单实现“相关文章推荐”功能的方法
通常在做内容网站的时候,需要在每一篇文章中出现与该文章相关的文章列表。对于大多数人来说,使用的方法通常是:建立一个关键词列表,判断每篇文章包含有那些关键词,最后根据关键词找出与某篇文章最相关的文章。对于内容比较复杂的网站,确定关键列表词显然会比较麻烦。 本文介绍了与以往方法不同的similar_text(php4,php5)函数来方便的达到我们的预期要求。具体的思路是:从文章列表中取出所有的文章标题,将所有的文章标题都同当前标题对比,将对比结果生成一个数组,按照相似度的大小由大到标题,利用similar_text将这些文章标题同原文章标题做对比,按标题的相似程度重新排列标题,就得到了与原文章相似的文章列表。 这个思路用到的关键函数是: 它返回的是两个字根串的相同字节数。 按照这个思路,我们建立如下的函数,这个函数的功能是把$arr_title数组按照同$title相似的的顺序重新排列数组。 "; for($j=0; $j<=2; $j++) { echo($j+1).":".$new_array[$j].""; } //$title当前标题,$arrayTitle为需要查找的数组 functiongetSimilar($title,$arr_title) { $arr_len= count($arr_title); for($i=0; $i<=($arr_len-1); $i++) { //取得两个字符串相似的字节数 $arr_similar[$i] = similar_text($arr_title[$i],$title); } arsort($arr_similar); //按照相似的字节数由高到低排序 reset($arr_similar); //将指针移到数组的第一单元 $index= 0; foreach($arr_similaras$old_index=>$similar) { $new_title_array[$index] = $arr_title[$old_index]; $index++; } return$new_title_array; } ?> 程序运行结果: 有些需要 注意的地方:关于similar_text速度,有人做过这个一个测试,结果是: The speed issues for similar_text seem to be only an issue for long sections of text (>20000 chars). I found a huge performance improvement in my application by just testing if the string to be tested was less than 20000 chars before calling similar_text. 20000+ took 3-5 secs to process,anything else (10000 and below) took a fraction of a second. Fortunately for me,there was only a handful of instances with >20000 chars which I couldn't get a comparison % for. 如果要直接使用正文作对比速度可能会比较慢。据说这个函数用于英文的效果不太好(感兴趣的读者可以自行尝试)。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |