先别急着批量重命名或重新导入。正确顺序是:从错位最明显的那一条反查唯一标识,确认标题、文件名、正文分别来自哪一批数据,再决定是修映射表还是改导入规则。一次只动一个变量,否则你无法知道错位是导入顺序、编码还是人工编辑造成的。
标题与文件错位通常有三种来源,处理方式完全不同。
你可以用一个小动作区分:随机挑三条记录,把标题里的专有名词拿去正文里搜。如果三条都能在“相邻一条”的正文里搜到,就是顺序错位;如果标题本身就不完整,是字符错位;如果标题和正文都完整但风马牛不相及,是内容错位。这一步的结果直接决定你后面是调排序规则、改编码,还是重建映射关系。
行号在导入过程中最容易变化,用它做对应关系,等于把核对建立在最不稳定的字段上。更稳的做法是给每条资料找一个唯一键,例如原始文件名、稿件编号或正文首句的哈希值。
假设你手上有 200 条资料,标题在一个表格里,正文文件在另一个目录里。可以按下面的顺序操作:
file_name、first_line。title、source_id。source_id 与文件名中的编号做连接,而不是按行号连接。这个动作的结果会告诉你下一步该做什么:如果匹配失败集中在开头几十条,可能是早期文件命名不规范,需要人工补编号;如果失败分散,说明唯一键本身不唯一,要换一个字段。
确认错位类型后,通常有两条路。
改映射表适合顺序错位和部分内容错位。代价是你要维护一张额外的对照关系,后续每次导入都得带上它。好处是不动原始文件,风险低,适合资料还在持续更新、原始文件不能改的情况。
重新导入适合字符错位,或唯一键本身不可靠的情况。代价是你要先修好源文件的编码和分隔符,再跑一次完整流程,耗时更长。好处是之后不再依赖补丁式映射。
选择条件可以简化成一句:如果错位只影响展示、不影响正文检索,先改映射;如果错位已经让正文和标题无法互相验证,先修源文件再重导入。不要两件事同时做,否则改完映射再重导入,你会分不清哪次改动解决了问题。
修完不等于结束。你需要留下三样东西:本次使用的唯一键字段、匹配失败的具体条目、以及修改前后的对照样本。这样下次再出现错位,可以直接判断是新问题还是旧问题复发。
另外注意,导入前后的数量变化、抓取量或展示量变化,不能单独证明对应关系已经正确。数量一致也可能全部错位,数量减少也可能是去重或过滤造成的。判断依据始终是逐条核对唯一键,而不是总量指标。
如果错位涉及的是已发布页面,修改标题与文件的对应关系后,前后比较要考虑搜索需求本身的季节波动和数据采集时间差,不要把某一次改动直接当成效果结论。
假设你导入 50 条资料,发现第 10 条到第 30 条的标题整体比正文晚了一条。先不要全量重命名,而是取第 10、20、30 条,用它们的正文首句去标题表里反查,确认这三条是否都指向“下一条”的标题。如果成立,说明是排序键不一致,把导入排序改为按唯一编号升序,再重新生成对照表。重新生成后只抽查这三条,确认标题与正文首句能互相印证,再处理剩余条目。这个顺序能让你在最小改动下定位规则问题,而不是在 50 条里逐条猜。