采集规则编写遇到多个业务争同一搜索需求时如何划界

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

采集规则编写遇到多个业务争同一搜索需求时如何划界

先划“需求归属”,再划“页面归属”,最后才写规则。三者顺序颠倒,采集规则就会变成多个业务共用一套字段,样本阶段看似成立,规模化后重复、漏采、错归属同时出现。划界的可执行标准是:同一搜索需求只允许一个主责业务定义“什么算命中”,其他业务只能以附加字段或独立页面参与,不能各自改写命中条件。

先判断争的是需求还是页面

多个业务争同一搜索需求,常见两种情形。第一种是需求本身只有一个,但不同业务都想用自己的页面承接;第二种是需求被拆成了几个子意图,各业务各占一部分。前者要划需求归属,后者要划子意图边界。判断依据不是业务方的口头描述,而是看用户输入同一查询词时,期望看到的结果是否属于同一类内容。若同一查询下用户可能想看报价、教程、案例三种内容,就属于子意图可分;若三种内容只是同一答案的不同包装,就属于同一需求,只能有一个主责。

动作上,先把争议查询列成一张最小清单,每个查询后面标注“用户想得到的一个答案是什么”。如果不同业务写出的答案实质相同,就归为一个需求;如果答案类型明显不同,才允许拆分。这个动作的结果直接决定下一步:归为一个需求时,后续只设一套命中条件;允许拆分时,才需要为每个子意图单独定义采集入口和页面归属。

把命中条件写成可判定的字段

划界最容易出错的地方,是把业务归属写进命中条件。例如“由A业务负责的页面才算命中”,这不是需求判定,而是组织判定,规模化后一旦业务调整,规则全部失效。可执行的写法是只描述内容特征,例如标题是否包含某一类词、正文是否出现某一类结构、页面是否属于某一内容类型。业务归属单独放一个字段,不参与命中计算。

假设你手上有一批页面,需要判断哪些属于“产品选型”这个需求。可以先把命中条件写成三条:标题含选型类词、正文含对比结构、页面类型为产品介绍。样本阶段这三条可能同时成立,但规模化后会遇到只有对比结构却没有选型词的页面,也会遇到标题含选型词却只是新闻的页面。此时不能直接放宽条件,而要先确认这些例外属于同一需求还是相邻需求。若属于相邻需求,应新增一个需求条目,而不是修改原条件。

动作与结果:对每个争议页面记录“命中哪条、未命中哪条、未命中的原因”。如果未命中原因集中在同一类内容上,说明边界需要新增条目;如果原因分散,说明命中条件本身写得不够可判定,应先改条件再扩量。

用主责与附加字段处理交叉

一个页面可以服务多个业务,但一个搜索需求只能有一个主责定义。做法是:主责业务定义该需求的命中条件与页面归属,其他业务以附加字段的形式标注自己在页面中的角色,例如提供数据、提供案例、提供转化入口。附加字段不影响采集是否命中,只影响命中后由谁补充内容。

这样处理的好处是,规模化后不会因为多业务参与而反复改写命中条件。代价是主责业务需要承担边界维护,其他业务不能自行调整命中口径。若组织上无法确定主责,可以先按“谁离用户答案最近”来定:直接给出答案的业务为主责,只提供佐证或入口的业务为附加。这个判断是假设性方法,实际执行时仍需用样本页面验证,不能仅凭组织架构决定。

规模化前先验证例外是否可归并

样本阶段成立不代表规则可扩量。扩量前要做一次例外归并测试:把已知例外按“未命中原因”分组,看每组是否能归入已有需求或新增需求。若一组例外无法归入任何需求,说明当前需求划分遗漏了一类用户意图,需要补条目;若一组例外可以归入已有需求,但命中条件没覆盖,说明条件需要调整,而不是新增需求。

这里要区分两种现象:抓取量下降和命中量下降。抓取量下降可能来自入口变化、页面移除或访问限制,不能单独证明需求划界正确;命中量下降可能来自条件收紧,也不能单独证明边界更准。判断划界是否成立,要看例外是否被稳定归入某一类,而不是看某个数字是否归零。

可执行动作:为每个争议需求保留一份“例外样本集”,每次调整规则后重新跑一遍,记录新增命中、丢失命中、归属变化三类结果。若丢失命中集中在同一业务页面,说明该业务被过度排除;若归属变化集中在同一子意图,说明子意图边界需要重新划分。这个动作的结果决定下一步是继续扩量还是回退条件。

写规则时保留可回退的版本

采集规则编写不是一次定稿。多个业务争同一需求时,规则会随业务调整而变化,因此每次修改都应保留可回退版本,并记录修改原因、影响范围和验证样本。回退版本不是备份文件,而是能回答“这次改动影响了哪些页面归属”的最小记录。没有这层记录,规模化后出现归属争议时,无法判断是规则问题还是业务问题。

最后落到一个具体判断:当你手上的资料或页面无法确定属于哪个需求时,先不要写进任何一条采集规则,而是单独放入待定区,等例外样本积累到能看出归并方向后再处理。待定区不是丢弃,而是避免用猜测污染已成立的边界。这个动作的直接结果是,已上线规则的命中稳定性提高,代价是待定页面暂时不参与采集,需要有人定期清理。

图1 图2

nginx