需求背景:本人有一个明星同款网站,想在商品下面推荐相关内容的商品。
数据库字段为:
id tags
1 xx,xx
model php代码如下:
/** 获取所有标签 */
public function get_all_tags() {
$sql = "SELECT id,tags FROM ".C('DB_PREFIX')."items WHERE pass=1";
$item = $this->query($sql);
$result = [];
foreach($item as $key => $value){
//id 做key ,值是该id下的所有tagID数组。
$result[$value['id']] = explode(",",$value['tags']);
}
return $result;
}
/**
* [更据指定文章返回相似的文章推荐]
* @param $id 指定的商品ID
* @param $top 要返回的推荐条数
* @return Array 推荐条目数组
*/
public function getSimilar($id, $top=6){
$all_tags = $this->get_all_tags();//调用上面的函数返回所有文章的tags
$finded = $all_tags[$id];//因为上面是包含所有文章了,所以肯定包含了当前文章
unset($all_tags[$id]);//把当前文章从数组中删除,不然自己和自己肯定是相似度最高了。
$jaccard_a