当前位置:网站首页 >  百科

解决苹果CMS采集重复数据的三种零门槛可落地实操方法

时间:2026年06月05日 16:31:44 来源:易频IT社区

方法一:开启系统自带采集防重复配置(适合新采集防重)

这是零代码的基础防重方案,不用修改数据库或代码,1分钟就能配置完成,适合新手和轻度采集场景,步骤如下:

  • 登录你的苹果CMS后台,默认后台地址是你的域名/admin.php,输入账号密码进入后台
  • 在左侧导航栏找到并点击系统设置 → 采集参数设置,进入采集配置页面
  • 找到配置项「采集重复判断方式」,系统默认一般仅判断采集源ID,我们修改为标题+采集来源地址(部分版本显示为「标题+播放来源」,选择这个选项即可)
  • 找到配置项「遇到重复数据是否跳过」,选择下拉选项中的
  • 点击页面底部的「保存设置」按钮,配置就生效了,之后新采集的数据遇到重复会自动跳过,不会生成重复内容。

方法二:数据库添加唯一索引(底层彻底杜绝重复,推荐中重度采集使用)

后台配置的防重是业务层判断,遇到大批量采集可能会出现判断失效的问题,添加数据库唯一索引是从底层限制重复数据插入,100%杜绝重复,是最稳定的防重方案,步骤如下:

  • 打开你的数据库管理工具,推荐用服务器面板自带的phpMyAdmin,宝塔面板、云服务器控制台都自带这个工具,不需要额外下载
  • 找到苹果CMS对应的数据库,打开视频数据表,默认视频表名为mac_vod,如果是文章站就是mac_news,图集站是mac_art,核心操作逻辑一致,以下以最常用的视频站为例
  • 点击导航栏的「SQL」标签,打开SQL执行窗口,直接粘贴以下SQL语句,如果你的数据库前缀是默认的mac_,不需要修改,直接执行即可:
``` ALTER TABLE `mac_vod` ADD UNIQUE INDEX `unique_vod_check` (`vod_name`, `vod_play_from`); ```
  • 如果你的数据库前缀不是默认的,把语句中的mac_vod改成你自己的表名即可,比如前缀是maccms_,就改成maccms_vod

执行成功后就完成了,此时数据库会自动拒绝插入相同标题+相同来源的重复数据,从根源杜绝重复问题。如果执行报错,提示「重复键值」,说明你当前数据库已经存在重复数据,需要先按照方法三清理完重复数据后再执行该语句。

方法三:批量清理已经存在的重复数据(适合已有大量重复的站点)

如果你的站点已经采集生成了大量重复数据,可以直接执行SQL语句批量清理,全程不到1分钟,不需要手动删除,步骤如下:

  • 同样打开数据库的SQL执行窗口,先执行以下语句查询当前有多少重复数据,确认规则是否正确:
``` SELECT vod_name,vod_play_from,COUNT() as cnt FROM mac_vod GROUP BY vod_name,vod_play_from HAVING cnt>1; ```

执行后会输出所有重复的数据列表,如果显示结果符合你的预期,再执行删除语句,删除重复数据时会自动保留最早采集的那一条,仅删除后面的重复内容:

``` DELETE t1 FROM mac_vod t1 INNER JOIN mac_vod t2 ON t1.vod_name = t2.vod_name AND t1.vod_play_from = t2.vod_play_from WHERE t1.vod_id > t2.vod_id; ```

如果你的mysql版本较低,执行上面的删除语句报错,用兼容所有版本的以下语句代替:

``` DELETE FROM mac_vod WHERE vod_id NOT IN (SELECT MIN(vod_id) FROM mac_vod GROUP BY vod_name,vod_play_from); ```

解决苹果CMS采集重复数据的三种零门槛可落地实操方法

执行完成后,回到苹果CMS后台,点击系统 → 更新缓存,清理缓存后就完成了,所有重复数据都已经清理完成。

常见问题排查

还是出现重复数据,是什么原因?

如果加了唯一索引还是出现重复,一般是重复判断的字段不对,部分采集规则中相同标题不同播放链接也会生成多条,你可以把唯一索引的判断字段改成标题+播放链接,修改后的SQL语句如下:

添加唯一索引:

``` ALTER TABLE `mac_vod` ADD UNIQUE INDEX `unique_vod_check` (`vod_name`, `vod_play_url`); ```

删除重复数据语句:

``` DELETE t1 FROM mac_vod t1 INNER JOIN mac_vod t2 ON t1.vod_name = t2.vod_name AND t1.vod_play_url = t2.vod_play_url WHERE t1.vod_id > t2.vod_id; ```

苹果CMSv8能用这些方法吗?

完全通用,仅需要修改表名即可,苹果CMSv8默认表前缀是maccms_,把所有语句中的mac_vod改成maccms_vod即可,核心逻辑完全一致。

按照流程落地即可:新站还未开始采集,先做方法一配置,再做方法二加唯一索引,就能彻底避免重复;已经有重复数据的站点,先做方法三清理重复,再做方法二加索引防后续重复,全程不需要复杂操作,按照步骤粘贴代码就能完成。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图