You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github GraphQL是否支持stars、forks等多条件非等值搜索过滤?

Github GraphQL 多条件仓库过滤可行性分析

嘿,我来帮你理清这个问题——Github GraphQL完全支持你提到的所有组合过滤条件,而且远不止等值过滤哦!下面我逐个拆解每个条件的实现方式,再给你一个完整的查询示例:

  • stars > 10 & forks > 3:直接用搜索限定符 stars:">10" 和 forks:">3",这两个是Github仓库搜索的基础限定符,支持大于/小于这类比较运算符。
  • 总提交数 >=5:可以用 commits:">=5" 来过滤,这个限定符会匹配默认分支提交数符合条件的仓库。
  • 总问题数 >=1:用 issues:">=1" 即可,这里的issues统计的是仓库所有状态的问题总数(包括已关闭的)。
  • 开放问题数 <=60:专门的限定符 open_issues:"<=60" 就是用来过滤开放状态的问题数量的,完全符合需求。
  • 仓库大小 >2k:注意仓库大小的单位是KB,如果是指2KB就用 size:">2",如果是2MB(也就是2048KB)就用 size:">2048",根据你的实际需求调整就行。
  • score >5:Github搜索结果的匹配分数可以用 score:">5" 来过滤,这个限定符能帮你筛选出匹配度更高的仓库。
  • 最近一年内更新:用相对时间语法 pushed:">=1 year ago" 最方便,它会匹配最近12个月内有推送记录(也就是更新过)的仓库;你也可以用具体日期,比如 pushed:">=2023-10-01"。

这些条件可以通过空格分隔组合成一个查询字符串(空格表示逻辑AND,也就是同时满足所有条件),然后放到GraphQL的search查询中,指定类型为REPOSITORY。

下面是一个完整的GraphQL查询示例,不仅会过滤出符合条件的仓库,还会返回对应的详细字段供你验证:

query FilteredRepositories {
  search(
    query: "stars:>10 forks:>3 commits:>=5 issues:>=1 open_issues:<=60 size:>2048 score:>5 pushed:>=1 year ago"
    type: REPOSITORY
    first: 10
  ) {
    nodes {
      ... on Repository {
        nameWithOwner
        stargazerCount
        forkCount
        # 获取默认分支的总提交数
        defaultBranchRef {
          target {
            ... on Commit {
              history {
                totalCount
              }
            }
          }
        }
        # 总问题数
        issues {
          totalCount
        }
        # 开放问题数
        openIssues: issues(states: OPEN) {
          totalCount
        }
        size
        score
        pushedAt
      }
    }
  }
}

需要注意的是,Github的搜索API有速率限制,如果查询结果较多,可能需要分页处理(通过after参数),但单从过滤条件的可行性来说,你提到的所有要求都能实现~

内容的提问来源于stack exchange,提问作者xpt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:31:07