海洋CMS如何批量替换采集标题?字段过滤/替换规则。
海洋CMS 批量替换采集标题只有两条路:新采集的数据在采集节点的字段过滤规则里做入库前替换,一行一条「原内容==替换内容」,配好一次终身生效;已经入库的老数据走数据库 SQL 的 REPLACE(),MySQL 8.0 以上还能用 REGEXP_REPLACE() 做正则替换,动手前必须 mysqldump 备份。
采集标题应该在入库前替换还是入库后替换?
结论:能入库前解决的,绝不入库后改。入库前替换只影响采集流程,不碰数据库、不改动已有数据、删掉规则即可回滚;入库后替换是不可逆的写操作,一旦正则写错,几万条标题可能被改花,只能靠备份恢复。
具体分工是这样:
- 入库前:处理所有"以后还要反复遇到"的问题,比如去站点名后缀、去
[HD]标签、去多余空格。写进采集节点的过滤规则,之后每个新采集都自动执行。 - 入库后:只处理历史遗留数据,或者规则写错需要补救的存量标题。
判断标准很简单:这条替换将来还会不会用到?会,就写进规则;不会,就用 SQL 一次性搞定。
海洋CMS 采集规则的字段过滤/替换规则怎么写?
结论:过滤区按「要过滤的内容==替换成的内容」逐行填写,等号右侧留空表示删除,等号左侧可以用 /.../ 包裹正则。
典型写法(一行一条):
本站地址==
[HD]==
[完结]==
/\s+/==
几个要点:
- 一行一条,两个等号分隔。左侧是要匹配的内容,右侧是替换结果,右侧留空就是直接删掉。
- 正则要用定界符包裹,常见是
/,例如/\d{1,3}集/==会把标题里的集数段清掉。填了正则却没生效,说明该版本对该字段只做纯文本替换。 - 确认规则绑定的是标题字段。部分版本把「过滤词」和「替换词」拆成两栏填写,语义和
A==B完全一致。 - 先测最短的一条。用"把站点名替换成空"这种一眼能验证的规则试采集,确认预览里标题变了,再批量加规则。
怎么用 SQL 批量替换已入库的采集标题?
结论:五步走——备份、查表结构、SELECT 试算、UPDATE 执行、清缓存。跳过任何一步都可能出事。
第 1 步,备份:
mysqldump -u用户名 -p 数据库名 > backup_$(date +%F).sql
第 2 步,确认表名和标题字段名。默认表前缀是 sea_,先看清楚:
SHOW TABLES LIKE 'sea_%';
DESC sea_content;
视频主表的标题字段常见为 c_name、v_name 这类命名,文章表另有 a_title,以 DESC 的实际输出为准,不要照抄。
第 3 步,先 SELECT 看影响面:
SELECT COUNT(*) FROM sea_content WHERE c_name LIKE '%旧内容%';
第 4 步,执行替换:
UPDATE sea_content
SET c_name = REPLACE(c_name, '旧内容', '')
WHERE c_name LIKE '%旧内容%';
MySQL 8.0 及以上、MariaDB 10.0 及以上可以上正则:
UPDATE sea_content
SET c_name = REGEXP_REPLACE(c_name, '\\s+', '')
WHERE c_name REGEXP '\\s+';
MySQL 5.7 及以下没有 REGEXP_REPLACE(),只能用 REPLACE() 做纯字符串替换,正则需求得靠 PHP 脚本或升级数据库解决。
第 5 步,清缓存。数据库改了但页面没变,基本都是缓存问题,去后台点一次更新缓存。
替换完还要检查什么?
结论:改完标题有三件事必须回头看——缓存、搜索索引、URL。
- 缓存:海洋CMS 有页面缓存和模板缓存,改库不清缓存等于没改。
- 搜索索引:站内搜索用的是索引表,标题改了要重新生成索引,否则搜旧标题还能搜到。
- URL 稳定性:伪静态 URL 走 ID 或拼音时,标题修改不会导致链接变化,这点可以放心;但如果你的 URL 直接拼了标题,改完会产生死链,动手前先确认伪静态规则。
另外提醒一句:正则替换务必先在几十条数据上试跑,用 SELECT c_name, REGEXP_REPLACE(c_name, '你的正则', '') AS 预览 FROM sea_content LIMIT 50; 看结果,确认无误再执行 UPDATE。标题是给用户和搜索引擎看的第一信息,改错一次的修复成本远高于多花五分钟验证。
原文链接:https://www.gj0.com/thread-145.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。