php怎么实现相关文章推荐功能

PHPz
发布: 2016-06-01 14:29:12
原创
2288人浏览过
php实现相关文章推荐功能的方法:首先从文章列表中取出所有的文章标题;然后将所有的文章标题都同当前标题对比;接着将对比结果放入一个数组;最后利用similar_text函数获取与原文章相似的文章列表即可。

php怎么实现相关文章推荐功能

php怎么实现“相关文章推荐”功能?

PHP简单实现“相关文章推荐”功能的方法

摘要:通常在做内容网站的时候,需要在每一篇文章中出现与该文章相关的文章列表。对于大多数人来说,使用的方法通常是:建立一个关键词列表,判断每篇文章包含有那些关键词,最后根据关键词找出与某篇文章最相关的文章。对于内容比较复杂的网站,确定关键列表词显然会比较麻烦。

本文介绍了与以往方法不同的similar_text()函数来方便的达到我们的预期要求。

具体的思路是:从文章列表中取出所有的文章标题,将所有的文章标题都同当前标题对比,将对比结果生成一个数组,按照相似度的大小由大到标题,利用similar_text将这些文章标题同原文章标题做对比,按标题的相似程度重新排列标题,就得到了与原文章相似的文章列表。

立即学习PHP免费学习笔记(深入)”;

这个思路用到的关键函数是:

int similar_text ( string $first, string $second[, float $percent] )
登录后复制

它返回的是两个字根串的相同字节数。

按照这个思路,我们建立如下的函数,这个函数的功能是把$arr_title数组按照同$title相似的的顺序重新排列数组。

绘蛙-多图成片
绘蛙-多图成片

绘蛙新推出的AI图生视频工具

绘蛙-多图成片 133
查看详情 绘蛙-多图成片
<?php
$demo_title= "简明现代魔法";
$demo_arr_title= array("简单易懂的现代魔法","简单明了的现代魔法","简明扼要的古代魔法","不简单的现代魔法","很难懂的现代魔法");
$new_array= getSimilar($demo_title,$demo_arr_title);
//print_r($new_array);
echo"与[$demo_title]最相关的前三个文章是:<br/>";
for($j=0; $j<=2; $j++)
{
echo($j+1).":".$new_array[$j]."<br/>";
}
//$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.
登录后复制

如果要直接使用正文作对比速度可能会比较慢。

据说这个函数用于英文的效果不太好(感兴趣的读者可以自行尝试)。用于英文时可以将英文句子用空格分开成多个单词后再写一个类似于similar_text的函数。

另外,如果句子中含有比较多“的”、“了”等非关键词字符时,得到的结果可能会不太理想。

更多相关知识,请访问PHP中文网

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号