麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
php实现相关文章
悬赏分:20 - 2007年08月22日

前一段时间想做个php网站,要求在一篇文章后面附带与该文章相关的文章列表。 在网上搜索了一下,多数人使用的方法大概是:建立一个关键词列表,判断每篇文章包含有那些关键词,最后根据关键词找出与某篇文章最相关的文章。对于内容比较复杂的网站,确定关键列表词显然比较麻烦。 后来我查阅了一些php函数,感觉similar_text(php4,php5)函数能够十分方便的达到我的要求。这个思路是:从文章列表中取出所有的文章标题,将所有的文章标题都同当前标题对比,将对比结果生成一个数组,按照相似度的大小由大到标题,利用similar_text将这些文章标题同原文章标题做对比,按标题的相似程度重新排列标题,就得到了与原文章相似的文章列表。 这个思路用到的关键函数是: int similar_text ( string $first, string $second [, float $percent] ) 它返回的是两个字根串的相同字节数。 按照这个思路,我们建立如下的函数,这个函数的功能是把$arr_title数组按照同$title相似的的顺序重新排列数组。 <?php //*************************************************************** //作者:ysight@gmail.com //主页:http://freelyweb.googlepages.com/ //日期:2007-5-18 //转载本程序请保留该以上信息! //*************************************************************** function getSimilar($title,$arr_title)//$title当前标题,$arrayTitle为需要查找的数组 { $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_similar as $old_index=>$similar) { $new_title_array[$index]=$arr_title[$old_index]; $index++; } return $new_title_array; } ?> 演示:我们建立一个5个数据的数组,并取出与目标标题最相关的前三个标题。 <?php $demo_title="php如何获得与文章标题相关的文章"; $demo_arr_title=array("php学习教程","asp学习教程","php如何实现上传文件","php学习教程","asp和php那个更容易学习"); $new_array=getSimilar($demo_title,$demo_arr_title); //print_r($new_array); echo "与[$demo_title]最相关的前三个文章是:
"; for($j=0;$j<=2;$j++) { echo ($j+1).":".$new_array[$j]."
"; } ?> 以上的代码将获得如下的结果: 与[php如何获得与文章标题相关的文章]最相关的前三个文章是: 1:php如何实现上传文件 2:asp和php那个更容易学习 3:php学习教程 注意:1、关于similar_text速度,有人做过这个一个测试(http://cn.php.net/manual/zh/function.similar-text.php): 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. 如果要直接使用正文作对比速度可能会比较慢。 2、这个函数用于英文的效果可能不太好(本人没有尝试过)。用与英文时可以将英文句子用空格分开成多个单词后再写一个类似于similar_text的函数。 3、句子中含有比较多“的”、“了”等非关键词字符时,得到的结果可能不太理想。 由于本人是php初学者程序有什么不足之处或者有更好的解决办法请多多指教。

提问者:hsight   08-22 15:03
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
37 + 22 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM