导出商品名称相似度大于80%的产品数据
- 2038
- 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的使用示例