KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

04 · 索引:抓到了为什么还是不显示 — keel 龙骨

本章目标:讲清「索引(Indexing)」环节——文本如何被存储、什么情况下会被拒收、几种状态的准确含义。 验收标准:能区分「已发现未抓取 / 已抓取未索引 / 已索引」,并知道各自该查什么。

本章目标:讲清「索引(Indexing)」环节——文本如何被存储、什么情况下会被拒收、几种状态的准确含义。
验收标准:能区分「已发现未抓取 / 已抓取未索引 / 已索引」,并知道各自该查什么。

为什么索引是分水岭:前三章解决"能不能拿到内容",索引环节决定"拿到之后要不要收"。很多"收录为 0"的问题不是内容差,而是被 noindex、被判定重复、或干脆卡在队列里。


一、倒排索引与分词

搜索引擎不存网页原文,它建的是倒排索引(Inverted Index):以"词"为键,记录"哪些文档包含这个词"。

"rendering" → [doc1, doc7, doc42, ...]
"渲染"      → [doc1, doc3, ...]

检索时先查词、再取文档集合求交,这就是为什么查询能秒回。分词决定"什么算一个词":

语言 分词方式 影响
英文 空格/标点切分 + 词干还原 running → run
中文 需要分词算法,无空格 分词质量直接决定召回

实践含义:

# 粗看页面里核心词的出现分布(辅助判断主题是否清晰)
curl -s https://www.xxxxxx.cn/learning/courses/tools/lessons/1/ \
  | sed 's/<[^>]*>//g' | grep -oE '[一-龥]{2,}' | sort | uniq -c | sort -rn | head

二、可索引性判据

一个 URL 即使被抓取,也可能被明确拒绝入索引。四种"请勿索引"的写法:

机制 写法 生效范围 备注
robots meta <meta name="robots" content="noindex"> 单页面 最常见
robots meta(定向) content="noindex, nofollow" 不索引 + 不跟链接 慎用 nofollow
X-Robots-Tag 头 X-Robots-Tag: noindex 非 HTML(PDF、图片) 响应头更早生效
robots.txt Disallow 阻止抓取 不是 noindex,见下

最容易搞错的一点:

robots.txt 的 Disallow 只阻止抓取,不阻止索引。
如果别的页面链接到它、或有外部链接,搜索引擎仍可能把它收录(只是没有正文摘要)。
要真正不进索引,必须让爬虫能抓到页面、然后读到 noindex。

正确姿势:先允许抓取,再用 noindex 拒绝索引,确认被移除后才可以考虑用 robots 屏蔽。

# 检查响应头里有没有 X-Robots-Tag
curl -sI https://www.xxxxxx.cn/learning/ | grep -i 'x-robots-tag'
# 检查页面里的 robots meta
curl -s https://www.xxxxxx.cn/learning/ | grep -oE '<meta name="robots"[^>]*>'

三、重复内容与聚合页

同一个内容出现在多个 URL 上,就叫重复内容。搜索引擎会选一个作为规范版本,其余不收录或归并。

重复来源 例子 治理
协议/域名 http vs https、裸域 vs www 301 到 canonical
尾斜杠 /a vs /a/ 全站统一 + 301
参数 ?utm_source=、?sort= canonical + robots 屏蔽
分页 列表页第 2 页内容近似 保留但标注,或自引用 canonical
聚合页 标签页/归档页与文章页重复 给聚合页写独立摘要或 noindex
打印机版 /print 版本 canonical 指向正文页

聚合页的处理原则:标签页、分类页只要有独立的组织价值(帮助发现、聚合主题),就该保留并抓好 canonical;如果只是纯筛选、无独立内容,用 noindex, follow。


四、索引选择与三种状态

GSC 的"覆盖率"报告里,同一个 URL 会落在不同状态,含义完全不同:

状态 含义 下一步查什么
已发现,尚未抓取(Discovered – currently not indexed) 知道 URL,但还没排上队 抓取预算、内链权重(第 01、02 章)
已抓取,尚未编入索引(Crawled – currently not indexed) 抓了,但判定不值得收录 内容质量、重复、薄内容(本章)
已编入索引(Indexed) 已收录 剩下的是排序与呈现
重复网页,Google 选择了不同的规范网页 被判定与别页重复 canonical 一致性(第 02 章)
已排除,被 noindex 标记 你自己要求不索引 确认是不是误配
软 404 返回 200 但内容像"没有" 检查空模板页
重定向错误 / 备用网页 URL 规范问题 修 canonical/301

两个高频误解:

  1. "已抓取未索引"不等于内容差——也可能是内容与站点整体质量不匹配、或同一主题已被更好的页面覆盖。要看是不是"薄内容"或"与其他页高度重合"。
  2. "已发现未抓取"不是被惩罚——多半是抓取优先级不够,重点页面内链太弱。
# 用 site: 快速确认收录总量(唯一可靠的自检方式)
# 在搜索引擎里执行:
# site:www.xxxxxx.cn

五、薄内容与索引膨胀

薄内容(Thin Content):正文明显不足、或与其他页高度重复的页面。它会稀释整站质量判断。

常见来源:

处理顺序:能合并的合并 → 能补内容的补内容 → 实在无价值的 noindex。不要直接删,先 noindex 并保留 301 到相关页,避免产生大量 404。


六、故障速查

现象 索引层原因 处理
收录为 0 但抓取正常 noindex 误配 检查 meta 与响应头
重要页显示"已抓取未索引" 薄内容或重复 补内容 / 合并 / 强化唯一性
重要页显示"已发现未抓取" 内链权重低 加强内链与 sitemap
搜索结果里的描述是别的页 被判定重复 修 canonical 一致性
收录数莫名膨胀 参数页/聚合页被收 noindex 或 robots 屏蔽
页面被收录但显示登录页 软 404 未登录返回 401/403

七、本章验收

# 索引层自检两连
curl -sI https://www.xxxxxx.cn/learning/ | grep -i 'x-robots-tag' || echo "无 X-Robots-Tag(正常)"
curl -s https://www.xxxxxx.cn/learning/ | grep -oE '<meta name="robots"[^>]*>' || echo "无 robots meta(可索引)"

内容进了索引,意味着它能被检索到了。但"能检索到"和"排在前列"是两回事——下一章讲排序。

进入 keel 阅读