最近有一个小功能需要开发,目的是随着商品数据库的数据较多,有很多商品名称相似和类似的商品,需要导出来给运营的同事去做排查和梳理。
可以使用php的函数similar_text来做判断。
计算两个字符串之间的百分比相似度:
similar_text("Hello World","Hello Shanghai",$percent);
echo $percent . "%";
//结果: 48%
?>
下面是dodo在laravel框架下实现的代码片段.
$cateId = 88;
$fields = ['id','cate_id','title','is_status'];
$cnt = GoodsList::query()->where(['cate_id'=> $cateId])->select($fields)->orderBy('title')->count();
$list = GoodsList::query()->where(['cate_id'=> $cateId])->select($fields)->orderBy('title')->get()->toArray();
echo '
';
for ($i=0; $i
if(isset($list[$i]) && is_array($list[$i])) { //后面的ID可能会被删除
for ($j=$i; $j
$prev = $list[$i] ['title'];
$next = $list[$j+1] ['title'] ?? '';
similar_text($prev,$next,$percent);
if($percent > 80) {
$dataPrev = $list[$i];
$dataNext = $list[$j+1];
echo $dataPrev['id'].'#####'.$dataPrev['cate_id'].'#####'.$dataPrev['is_status'].'#####'.$dataPrev['title']."\r\n";
echo $dataNext['id'].'#####'.$dataNext['cate_id'].'#####'.$dataNext['is_status'].'#####'.$dataNext['title']."\r\n";
echo "AAAAA\r\n";
unset($list[$j+1]); //删除后面的id
// echo $prev.'===='.$next.'===='.$percent."
";
}
}
}
}
exit();
/*similar_text("Hello World","Hello Peter",$percent);
echo $percent;*/
exit();