导出商品名称相似度大于80%的产品数据
- 2578
- PHP
- 0
- super_dodo
- 2020/10/24
最近有一个小功能需要开发,目的是随着商品数据库的数据较多,有很多商品名称相似和类似的商品,需要导出来给运营的同事去做排查和梳理。
可以使用php的函数similar_text来做判断。
计算两个字符串之间的百分比相似度:
<!DOCTYPE html>
<html>
<body>
<?php
similar_text("Hello World","Hello Shanghai",$percent);
echo $percent . "%";
//结果: 48%
?>
</body>
</html>
下面是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 '<pre>';
for ($i=0; $i<$cnt; $i++) {
if(isset($list[$i]) && is_array($list[$i])) { //后面的ID可能会被删除
for ($j=$i; $j<$cnt; $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."<hr>";
}
}
}
}
exit();
/*similar_text("Hello World","Hello Peter",$percent);
echo $percent;*/
exit();
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例

