Github GraphQL搜索过滤

时间:2018-03-18 04:21:07

标签: search github graphql github-api github-graphql

基于我有限的搜索,似乎GraphQL只能支持相等的过滤。所以,

是否可以使用

的过滤条件进行Github GraphQL搜索
  • 明星> 10
  • 叉子> 3
  • 总提交> = 5
  • 总问题> = 1
  • 未解决的问题< = 60
  • 尺寸> 2K
  • 得分> 5
  • 最后一次更新是在一年内

即,过滤将所有以上条件。有可能吗?

2 个答案:

答案 0 :(得分:1)

查询存储库时,只能对列表中一定数量的字段应用过滤器:

  • 星数
  • 叉数
  • 大小
  • 最新更新

尽管您无法在查询过滤器中指定它们,但可以在查询中包括其他字段并在客户端应用程序中验证值:

  • 总问题数
  • 未解决问题的数量

从理论上讲,您还可以使用特定的参数参数查询提交次数,该查询返回服务器错误,很可能会超时。因此,这些行被注释掉了。

这是GraphQL查询:

query {
  search(
    type:REPOSITORY, 
    query: """
      stars:>10
      forks:>3
      size:>2000
      pushed:>=2018-08-08
    """,
    last: 100
  ) {
    repos: edges {
      repo: node {
        ... on Repository {
          url

          allIssues: issues {
            totalCount
          }
          openIssues: issues(states:OPEN) {
            totalCount
          }

          # commitsCount: object(expression: "master") {
          #   ... on Commit {
          #      history {
          #       totalCount
          #     }
          #   }
          # }
        }
      }
    }
  }
}

有关存储库查询的规范,请参见:https://help.github.com/en/articles/searching-for-repositories#search-by-repository-size

答案 1 :(得分:0)

这不是答案,而是对我迄今收集的内容的更新。

  • 根据“Select * for Github GraphQL Search”,并非所有上述条件都可用于存储库边缘。即,“完全提交”,“公开问题”和“得分”可能不可用。

  • 问题的目的显然是找到有价值的存储库,并清除质量较差的存储库。我collected所有可能对此类评估有帮助的可用字段here

截至2018-03-18的副本:

query SearchMostTop10Star($queryString: String!, $number_of_repos:Int!) {
  search(query: $queryString, type: REPOSITORY, first: $number_of_repos) {
    repositoryCount
    edges {
      node {
        ... on Repository {
          name
          url
          description
#         shortDescriptionHTML
          repositoryTopics(first: 12) {nodes {topic {name}}}
          primaryLanguage {name}
          languages(first: 3) { nodes {name} }
          releases {totalCount}
          forkCount
          pullRequests {totalCount}
          stargazers {totalCount}
          issues {totalCount}
          createdAt
          pushedAt
          updatedAt
        }
      }
    }
  }
}
variables {
  "queryString": "language:JavaScript stars:>10000", 
  "number_of_repos": 3 
}

任何人都可以试用as per here