Skip to main content

搜索 Developer Index

1 min read

搜索公开代码仓库中的 issue、已合并的拉取请求和 README,以及精选文档站点。结果按相关性排序,并以 Markdown 格式提供匹配段落。

如需将数组筛选条件作为 JSON 传递,可在同一路径使用 POST

可重复指定的筛选条件在 GET 中支持以下任一形式:重复的查询参数,例如 types=issue&types=pull_request,或以逗号分隔的单个值,例如 types=issue,pull_request

索引分为两部分,这两个筛选条件分别限定各自部分的搜索范围:

  • repos 限定仓库部分,即 issuepull_requestreadme 类型
  • sources 限定文档部分,即 doc 类型
  • 同时传入两者会合并这两部分,而非取交集,因此会返回任一部分中的匹配结果

由于每个筛选条件仅适用于其中一部分,无法匹配任何请求类型的筛选条件会被拒绝,而不会静默地返回空结果:

  • types 中不包含仓库类型时,repos 会返回 400,提示 repos 无法匹配任何请求类型,且应添加仓库类型或移除 repos
  • types 中不包含 doc 时,sources 会返回 400,并提示 sources cannot match any requested type; add doc or drop sources

七个仓库筛选条件——language (如 Rust) 、topic (如 async) 、license (如 MIT) 、min_starsmax_starsarchivedfork——用于描述代码仓库。索引中的大多数文档页面来自已爬取的网站,并不对应任何仓库,因此无法通过仓库属性将这类页面纳入或排除。

因此,请求中使用任一此类筛选条件但未通过 sources 限定范围时,不会返回 doc 结果。响应中只包含仓库证据:issuepull_requestreadme 类型,因为索引的文档部分根本不会执行。这是预期设计,并非索引故障。

如需保留文档结果,请移除仓库筛选条件。你也可以通过 sources 限定文档部分的范围,然后读取响应中回显的 sources,确认该 id 已编入索引。

sources 可接受的值#

sources 不是固定的枚举类型。它接受文档来源 ID;每个 ID 都是长度不超过 512 个字符的非空字符串,且每个请求最多可传入 20 个。这些 ID 对应索引中的文档站点,集合会随时间不断扩展。

要确认某个 ID 是否有效,请传入该 ID,然后查看响应中新增的 sources 数组。该数组仅在你传入 sources 时出现,并会按请求中的原样返回每个 ID 及其是否已编入索引:

indexed: true 表示该 source 存在已发布的 generation,因此可能会出现来自该 source 的文档证据。indexed: false 表示该 id 中没有任何内容可以匹配,这可区分不在索引中的 id 与仅仅未找到结果的 query。

repos 也会以相同方式返回,作为一个 repos Array,其中包含 indexed,并在 types 下提供按 Type 划分的明细:

如需了解工作流概览,请参见 Developer Index 指南