用分词技术的视角看,抓取、索引、排名是三个不同的处理阶段:抓取是发现并下载页面内容,索引是对下载内容做解析、切分和入库,排名是从索引库里召回候选并排序。区分它们最直接的方法是看交付结果——抓取交付的是原始内容,索引交付的是可被检索的结构化记录,排名交付的是某个查询下的结果顺序。三者不是同一件事,也不能互相替代。
如果把一个页面从被发现到出现在结果里拆开看,每个环节都有独立的交付物和验收点:
这三个交付物对应不同的失败表现。抓取失败时页面根本取不到;索引失败时页面取到了但检索不到;排名失败时页面能被检索到,只是位置不理想。判断问题出在哪一环,先看交付物到没到。
分词技术处理的是文本如何被切分成可检索的单元。它作用于索引阶段:页面内容被解析后,需要切分成词或词组,才能建立倒排记录,供后续检索命中。抓取阶段只关心能不能取到内容,不关心内容怎么切分;排名阶段则是在已切分好的记录上做相关性计算。
这带来一个实用的判断方法:如果某个关键词在页面上明明存在,但搜索该词时页面完全不出现,问题更可能出在索引与分词环节,而不是抓取。反过来,如果页面连抓取日志里都没有记录,那还没走到分词这一步。
可以用一个假设例子说明:假设页面上写的是“分词技术方案”,而用户搜索“分词 技术 方案”。如果分词把整串当作一个单元,检索单个词时可能命中不到;如果切分成多个词,命中概率更高。这个例子只说明分词影响检索命中,不代表某个搜索引擎的具体切分规则。
要区分抓取、索引和排名,可以按顺序做以下检查,每一项对应一个环节:
每一步的判断结果决定下一步查什么:抓取没通过就不必查索引;索引没通过就不必查排名。这样能避免把排名问题误判成抓取问题。
实际工作中常遇到两种处理方向,选择哪种取决于问题定位:
判断依据是交付物是否到位:抓取日志有记录、收录查询能命中,才说明前两环基本通过。若这两项任一不通过,优先处理通路问题,而不是直接优化排名。
选一个你关心的页面和一个页面上确实存在的词组,先查抓取记录,再查能否被检索到。两步都通过后,再去看该词组对应的查询下页面位置。这样你就能明确当前卡在抓取、索引还是排名,而不是把三个环节混在一起处理。