

# 为什么 Google 站内搜索结果数不等于索引数量

不能。Google `site:` 搜索无法可靠地告诉你，Google 已将多少个页面编入索引。Google 索引是它为搜索而存储的页面集合。`site:` 运算符要求 Google 将搜索范围限定在某个网站或地址路径内。Google 明确说明，返回的列表并不完整。已编入索引的页面也不一定会出现在结果中。对于自己的网站，应先列出预期页面，再通过 Google 面向网站所有者的搜索工具 Google Search Console，检查选定的确切地址。[Google 搜索中心 — 检索于 2026 年 10 月 25 日；站内查询结果并不完整](https://developers.google.com/search/docs/monitor-debug/search-operators/all-search-site)

将三类记录分开保存：你期望网站包含的页面、搜索返回的页面，以及通过自己的账号检查的确切页面。这些记录有助于逐页调查。用站点地图中的数量减去搜索结果数量，无法算出未编入索引的页面数量。

## 1. 从待查页面开始

一个公开提问很好地说明了这个问题：一位网站所有者提交了包含 10,000 个链接的站点地图，但站内搜索只显示 17 条结果。站点地图是列出页面地址的文件。这两个数字代表不同的证据。这篇公开帖子记录的是一个人在 2020 年 6 月 4 日提出的问题。它既没有核实该网站的索引状态，也没有说明这一问题有多普遍。[网站所有者的公开提问 — 发布于 2020 年 6 月 4 日，检索于 2026 年 10 月 25 日；所述数量未经独立核实](https://www.reddit.com/r/SEO/comments/gwmefr)

接下来，更有用的问题是：“对于每个我期望 Google 编入索引的页面，我掌握了哪些证据？”

对于自己的网站，请按以下步骤操作：

1. 保存待查页面的地址清单。URL 就是网址。以待查 URL 清单作为起始记录。
2. 单独保存站点地图。记录获取时间，以及它覆盖网站的哪些部分。
3. 逐一比较这两份记录中的确切地址。计数前，先记下重复条目和差异。
4. 选定确切的 URL，通过所有者权限进行检查。先检查会影响决策的页面，以及证据不明确的页面。
5. 将公开搜索观察记录作为另一个证据来源。

站点地图条目只能说明某个地址出现在该文件中，不能证明 Google 已将该地址编入索引。待查 URL 清单说明的是你想调查哪些地址，不能确定 Google 当前存储了哪些页面。

说明计数单位。如果条目有重复，“100 条站点地图条目”可能不等于“100 个不同的 URL 字符串”。这两个数字都不能直接视为已编入索引的不同页面数量。

如果你不是网站所有者，也没有获授权的 Search Console 访问权限，请记录这一限制。公开搜索证据仍可显示搜索返回了哪些地址，但不能代替所有者的私有记录。

## 2. 分开保存页面清单、搜索观察记录和所有者权限检查记录

在调查工作表中使用三张关联表。通过完全一致的 URL 字符串关联这些表，同时保留每个来源的原始值。

| 记录 | 包含的内容 | 能够支持的结论 |
| --- | --- | --- |
| 待查 URL 和站点地图记录 | 待查地址、站点地图条目、来源和记录日期 | 你预期包含或已列出的地址 |
| 公开搜索记录 | 确切查询、设置、返回的地址和观察时间 | 该次采集的样本中出现了哪些结果 |
| 所有者权限检查记录 | 所检查的确切 URL、报告的发现、来源和检查时间 | 通过所有者权限进行的检查对该 URL 报告了什么 |

不要用单个“已编入索引”列代替这些表。这样会掩盖每项发现的来源和证据强度。

还应区分以下术语：

| 术语 | 在本次调查中的含义 |
| --- | --- |
| 已发现 | 证据表明 Google 知道某个地址的存在 |
| 已抓取 | 证据表明 Google 已获取该页面 |
| 已编入索引 | 证据报告 Google 已将该页面纳入索引 |
| 本次查询已返回 | 该地址出现在留存的搜索结果中 |
| 本次查询未返回 | 留存的结果中不包含该地址 |
| 未知 | 所需证据缺失或不明确 |

知道某个 URL 的存在、获取其页面、将其编入索引，以及在某次查询中返回它，是不同的状态。只记录证据能够支持的状态。如果没有抓取证据，就将抓取状态保留为未知。一条搜索结果无法提供完整的抓取历史。

为每项发现标注时间。搜索观察和所有者权限检查可能发生在不同时间。保留这两个时间。后续检查不会改变较早记录所显示的内容。

## 3. 保存确切的站内查询和搜索条件

搜索前，先写下问题和范围。例如，你可能想调查：某个文档路径下选定的 URL，是否出现在一个小规模公开搜索样本中。

记录以下内容：

1. 确切的查询文本，包括 `site:` 运算符和路径。
2. 搜索引擎。
3. 请求使用的国家和语言。
4. 结果数量上限，即你要求留存的最大结果数。
5. 实际观察时间，如能获取。
6. 采集结果和任何已知的失败情况。

保留实际返回的 URL。界面显示的总数不能提供一份确切清单，供你与待查地址比较。显示的总数和留存的结果行，都无法确定完整的索引数量。

Chronometrica 的 Google Search Scraper 可用于此方法中的公开搜索部分。Actor 是托管运行的数据采集程序。已核查的公开构建版本声明了下方的输入字段，以及本指南使用的结果字段。这些文档表明，它适合用于采集搜索观察记录，但不能证明本指南已成功进行过采集。

下方提供的输入用于请求一个小样本：

```json
{"country":"US","engines":["google"],"language":"en","maxResultsPerExecutedQuery":3,"queries":["site:developers.google.com/search/docs/"]}
```

3. 保存确切的站内查询和搜索条件

JSON 是一种用于表示命名值和列表的文本格式。按以下顺序替换示例值：

1. 将整个 `queries` 列表替换为你要执行的一条站内查询。所提供的查询针对 Google 的文档路径，并非你的网站。
2. 使用本方法时，将 `engines` 保持为 `["google"]`。
3. 根据所需的搜索条件设置 `country` 和 `language`。此处，`US` 表示请求美国，`en` 表示请求英语。
4. 首次使用时，将结果数量上限设小一些。提供的值为 3。已核查的 `maxResultsPerExecutedQuery` 允许范围为 1 至 100。
5. 将完整输入与采集记录一起保存。

所提供的输入已根据公开默认构建版本的规则通过静态检查。静态检查会核对输入格式和允许值，但不会运行 Actor。本指南未使用 Actor 进行采集。该检查不能证明结果可获取、覆盖完整或执行成功。[公开默认构建版本 1.0.15 — 核查于 2026 年 10 月 25 日；已检查输入输出规则，未运行样本](https://api.apify.com/v2/acts/mlmVX4amk2biciJaB/builds/default)

公开的 Google Search Results Scraper Task 也可作为起点。Task 是已保存的输入预设。其公开页面和确切的 Task ID 已核实，但当前保存的设置尚未核实。使用前，请检查并替换这些设置。不要假定它们与所提供的输入一致。[Google Search Results Scraper Task — 核查于 2026 年 10 月 25 日；已核实其公开存在，未核实保存的设置及实际运行情况](https://apify.com/chronometrica/google-search-scraper/examples/google-search-results-scraper)

## 4. 保留搜索结果行并建立调查工作表

以下采集步骤是建议读者采取的操作，并非本文实际运行后得到的结果。

采集后，检查任务是已完成、已失败，还是已停止但结果不明确。保存可用的结果行和采集证据。如果采集失败，就记录为采集失败。不要报告为 Google 没有返回匹配页面。

保留以下有文档说明的结果字段：

| 字段 | 需保留的内容 |
| --- | --- |
| `engine` | 该结果对应的搜索引擎 |
| `executedQuery` | 该结果对应的查询 |
| `canonicalUrl` | 返回结果的地址字符串 |
| `resultDomain` | 返回的域名，即地址中表示网站名称的部分 |
| `rank` | 跨已获取页面解析出的受支持结果区块中的连续序位 |
| `title` | 搜索结果标题 |
| `snippet` | 搜索结果文本，包括返回的 null 值 |
| `isSponsored` | 标明该结果是否为赞助结果的标记 |
| `observedAt` | 记录的观察时间 |

这些字段已在核查过的构建版本中声明。但声明字段不等于实际采集会提供每个值。保留返回地址的原样。仅凭字段名 `canonicalUrl`，不能证明有人检查过目标页面的首选地址。摘要是搜索结果文本，并非目标页面的最新副本。[公开默认构建版本 1.0.15 — 核查于 2026 年 10 月 25 日；已声明结果字段，未核实实际运行的输出](https://api.apify.com/v2/acts/mlmVX4amk2biciJaB/builds/default)

另建一张调查表，每个待查 URL 占一行：

| 调查字段 | 记录内容 |
| --- | --- |
| 待查 URL | 要调查的确切地址 |
| 页面清单来源和日期 | 地址的来源和保存时间 |
| 是否列于站点地图 | 已列出、未列于所检查的文件，或未知 |
| 站内查询引用 | 已保存查询及其设置的链接或引用 |
| 搜索状态 | 已返回、未在留存样本中返回、失败，或未确定 |
| 匹配结果引用 | 实际搜索结果行的引用 |
| 普通查询检查 | 确切查询、观察到的结果和时间 |
| 所有者权限检查 | 所检查的确切 URL、报告的发现和检查时间 |
| 地址关系证据 | 观察到的任何首选地址或重定向情况 |
| 访问证据 | 观察到的任何页面访问情况及其时间 |
| 下一步操作 | 为解决问题而需要进行的具体检查 |

保留缺失值。排名缺失表示未知，不是排名为零。时间戳缺失表示未知，不是你打开工作表的时间。摘要缺失不能证明页面没有文本。只有采集证据能够确定该请求范围内确实没有返回结果时，返回零行才是有依据的计数。

如果需要将留存结果移入电子表格，可参阅单独的 [Google 搜索导出指南](/zh-Hans/articles/google-%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C%E9%99%90%E9%87%8F%E5%AF%BC%E5%87%BA/)。该指南介绍导出检查。本次调查则使用这些结果行来评估单个 URL。

## 5. 通过合适的来源检查选定的确切 URL

通过普通搜索查找选定的确切 URL，作为第二种公开观察记录。保存查询和返回地址。先逐字比较地址字符串，再判断结果是否与待查页面匹配。

如果地址不同，保留两个值。不要在未作说明的情况下，将不同路径、不同地址参数或重定向视为同一页面。重定向会把请求从一个地址转到另一个地址。如果无法确定两者的关系，就将匹配状态标为未确定。

普通查询未返回某地址，与站内查询未返回某地址有相同的基本限制：它只记录该次查询没有返回什么，不能证明该地址未被纳入整个索引。

对于自己拥有的网站，请通过自己的授权访问权限，使用 Google Search Console 的网址检查工具。网址检查可针对一个具体地址，提供所有者权限检查。请遵循当前的官方工具指南，不要依赖固定的界面操作顺序。

对每个选定的 URL，按以下顺序操作：

1. 检查确切的待查地址。
2. 保存报告的发现和检查时间。
3. 如果检查发现了不同地址，将其作为单独的值保留。
4. 分别记录可获取的发现、抓取或索引证据。
5. 将这些证据与公开搜索观察记录比较。
6. 根据报告的证据，选择下一项检查。

如果证据指出了规范 URL，它指的是首选页面地址。将该地址与所检查的地址一起保存。不要改写原始记录。如果证据指出存在重定向或访问问题，请保留该发现，并查阅针对该情况的当前官方指南。

不要仅因搜索未返回某页面，就决定采用哪种技术修复。缺少搜索结果并不能确定原因。同样，对一个 URL 进行所有者权限检查，也不能确定站点地图中每个 URL 的状态。

明确标注仅限所有者访问的记录。Actor 的公开结果行与私有 Search Console 信息应分开保存。本指南未证实该 Actor 能读取你的 Search Console 账号。

如果之后需要判断某条结果的位置是否发生变化，请另建比较记录。[Bing 排名快照指南](/zh-Hans/articles/%E5%BF%85%E5%BA%94%E5%85%B3%E9%94%AE%E8%AF%8D%E6%8E%92%E5%90%8D%E5%BF%AB%E7%85%A7%E5%AF%B9%E6%AF%94/)解释了为什么设置必须可比，以及为什么要保留未知状态。该指南讨论的是 Bing 排名比较，不为本次 Google 调查提供任何实际运行证据。

## 6. 原创虚构示例：100 条站点地图条目和七个返回的 URL

下面的完整演算示例为原创虚构内容。它不是 Actor 的实际运行结果、客户结果，也不是对某家公司的实际观察发现。

一位虚构的网站所有者保存了一份包含 100 条 URL 条目的站点地图。另一份站内查询样本包含七个返回的 URL。在本例中，所有者已核查，这七个 URL 均与该站点地图中的条目匹配。

正确的初始记录如下：

| 证据 | 虚构值 | 含义 |
| --- | --- | --- |
| 站点地图清单 | 100 条 URL 条目 | 已保存文件中列出的地址 |
| 留存的站内查询样本 | 7 个返回的 URL | 在该搜索样本中观察到的地址 |
| 已编入索引的页面总数 | 未知 | 两份记录都无法确定这一数量 |
| 所有者权限检查结果 | 尚未记录 | 建议进一步检查 |

算术差值为 100 − 7 = 93。这里计算的是站点地图条目数与搜索结果数之差，并不代表已确认有 93 个页面未编入索引。站点地图和搜索结果并非相互匹配、完整列出已编入索引页面与未编入索引页面的集合。

即使在本例中，七个返回的 URL 都与站点地图条目匹配，未出现在搜索样本中也不能证明某页面未被纳入索引。不要报告索引覆盖率为百分之七。这七个观察到的 URL，不能作为计算覆盖率时所需的完整已索引 URL 数量分子。

接着，所有者选择一个未被返回的待查 URL。下一步是通过所有者权限使用网址检查工具。本例尚未产生任何检查结果，因此检查状态仍为“未检查”。

如果后续检查报告该确切 URL 已编入索引，请针对该 URL 记录这项发现及检查时间。将先前的搜索状态保留为“未在留存的站内查询样本中返回”。这两份记录可以同时成立，因为它们回答的是不同问题。

如果后续检查报告了其他情况，请保留其确切含义，并根据该证据选择下一步操作。不要将该结果推及其他尚未检查的 URL。

## 7. 报告发现前，先检查工作表

按以下标准验收：

1. 确认每个数字的计数单位：条目、不同地址、搜索结果行，或已检查的 URL。
2. 确认每个搜索状态都关联到确切查询和已保存的条件。
3. 确认返回的 URL 都关联到实际留存的结果行。
4. 确认“未返回”状态仅指留存样本中的情况。
5. 确认采集失败仍记录为失败，没有被报告为零条结果。
6. 确认所有者权限检查的发现注明了所检查的确切 URL 和检查时间。
7. 将缺失、零、未确定和未检查保留为不同的值。
8. 删除所有根据搜索数量推算的索引总量。

一份有用的报告应说明页面清单规模、观察到的搜索结果、已检查的部分、已确认的发现，以及尚未解决的问题。如果只检查了部分选定的 URL，请明确说明。没有支持证据时，不要将这部分 URL 的检查发现推及整个网站。

如果记录不一致，请保留双方的记录、来源和时间。下一步要决定的是哪个确切 URL 需要再次检查，而不是用哪个数字替换其他数字。

## 根据证据，确定下一个 URL 的处理方式

从待查清单中选择一个重要的 URL。记录它是否列于站点地图、公开搜索状态，以及能获取到的当前所有者权限检查结果。根据这些证据，确定下一步的具体操作。如果记录无法确定完整的索引数量，就将其保留为未知。

需要留存公开搜索样本时，可使用 [Chronometrica Google Search Scraper — 2026 年 10 月 25 日已核查输入输出规范；公开搜索输入和字段有文档说明，本指南未实际运行](https://apify.com/chronometrica/google-search-scraper)。将样本与页面清单、所有者权限检查记录一起保存。逐个 URL 说明每个来源能证明什么。

## 来源和延伸阅读

- [Google 搜索中心：站内搜索运算符 — 检索于 2026 年 10 月 25 日；返回的列表并不完整，已编入索引的 URL 也不一定出现](https://developers.google.com/search/docs/monitor-debug/search-operators/all-search-site)
- [Chronometrica 公开默认构建版本 1.0.15 — 核查于 2026 年 10 月 25 日；已检查输入输出规范，仅进行静态验证，未实际采集](https://api.apify.com/v2/acts/mlmVX4amk2biciJaB/builds/default)
- [Google Search Results Scraper Task — 核查于 2026 年 10 月 25 日；已核实该确切 Task 的存在，未核实保存的设置及实际运行情况](https://apify.com/chronometrica/google-search-scraper/examples/google-search-results-scraper)
- [网站所有者的公开提问 — 发布于 2020 年 6 月 4 日，检索于 2026 年 10 月 25 日；所述站点地图和搜索数量仅用于交代问题背景](https://www.reddit.com/r/SEO/comments/gwmefr)