分词工具,一次全站扫描被中断后怎样判断已覆盖范围

📍 WDQWDWQD987AAAAA:216.73.216.206
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /b36e3dce6eb7.html
📄

分词工具,一次全站扫描被中断后怎样判断已覆盖范围

先给结论:中断后不要用“扫描到第几条”来判断覆盖范围,而要用“已完成的分片清单”与“未完成的分片清单”来界定。分词工具扫描全站时通常按页面或分片推进,中断只意味着当前分片未完成,已完成分片的结果仍然有效。判断覆盖范围的关键动作是导出已完成分片标识,与全站清单做差集,得到未覆盖部分;这个差集决定你是续扫、重扫还是可以先用部分结果做判断。

矛盾现象:进度条停在中间,结果却像已经扫完

中断后常出现两种相反的现象:进度条停在某个位置,但已产出的分词结果数量看起来接近全站页面数;或者进度条接近完成,结果里却明显缺少某些栏目。这两种现象并不矛盾,因为进度条反映的是任务调度进度,结果数量反映的是已落盘记录数,两者统计口径不同。

如果分词工具按分片并行处理,调度进度可能显示的是“已派发分片数”,而落盘结果是“已完成分片数”。派发在中断前可能已经覆盖大部分分片,但真正完成并写入结果的只是其中一部分。因此进度接近完成、结果却缺栏目,是正常的口径差异,不是工具出错。

两种解释:是覆盖缺口,还是结果尚未落盘

中断后的“结果不完整”通常有两种解释,区分它们决定你下一步是补扫还是等待。

两种解释对应不同动作:覆盖缺口需要补扫,未落盘需要先确认临时文件是否可恢复,再决定是否重跑。把未落盘误判为缺口会导致重复劳动,把缺口误判为未落盘会导致结果被高估。

能区分两种解释的证据

要区分上述两种解释,可以收集三类证据,它们比进度条更可靠。

  1. 分片清单与状态文件。多数分词工具会维护分片状态,记录每个分片是待处理、处理中还是已完成。如果状态文件显示某分片为“处理中”,它属于未落盘;如果显示“待处理”,它属于覆盖缺口。具体状态字段名称需要按你使用的工具核对。
  2. 结果中的分片标识。如果结果记录带有分片ID或批次号,可以按分片聚合,看哪些分片完全没有记录。完全没有记录的分片更可能是缺口,有部分记录的分片更可能是未落盘。
  3. 临时文件与日志时间戳。检查中断时间点前后的日志,看最后一个成功写入的分片是哪个。如果日志显示某分片已开始但无完成记录,该分片属于未落盘;如果日志中根本没有该分片的开始记录,属于缺口。

一个假设的例子:假设全站有100个分片,中断时状态文件显示60个已完成、5个处理中、35个待处理。那么已覆盖范围是60个分片,未落盘是5个,缺口是35个。此时应先尝试恢复5个处理中的分片,再补扫35个待处理分片,而不是全站重扫。这个数字只是说明比较方法,实际分片数和状态字段以你的工具为准。

实际动作:先做差集,再决定续扫还是重扫

判断覆盖范围的实际动作是导出已完成分片标识,与全站分片清单做差集。这个动作的结果直接决定下一步:

做差集时要注意:全站清单本身可能是在扫描开始时生成的,如果扫描期间站点有新增或删除页面,差集结果会包含这些变化。因此差集只能说明“相对于扫描开始时的清单”的覆盖范围,不能直接等同于当前全站覆盖范围。如果扫描期间站点变动频繁,需要重新生成全站清单再比对。

取舍条件:什么情况下部分结果可以直接用

部分结果能否用于后续判断,取决于你的用途和缺口分布,而不是缺口大小。

一个可操作的判断方法是:先按栏目统计已完成分片和缺口分片的比例。如果某个栏目的缺口比例明显高于其他栏目,说明中断对该栏目影响更大,基于部分结果做栏目间对比会产生偏差。如果各栏目缺口比例接近,部分结果的偏差相对均匀,可以先用,但结论要保守。

最后一步是把判断结果写进任务记录:已完成分片数、缺口分片数、未落盘分片数、以及你选择的动作(恢复、补扫或重扫)。这样下一次中断时,你可以直接复用这套差集方法,而不必重新摸索覆盖范围。

图1 图2

nginx