我想在python项目中使用GitHub GraphQL Api获得按星级排名的前10个javascript /开放源代码存储库(以及一些相关信息)。到目前为止,我有这个查询:
query{
search(type: REPOSITORY, query: "language:javascript", first:10) {
userCount
edges {
node {
... on Repository {
name
url
stargazers {
totalCount
}
owner{
login
}
}
}
}
}
}
问题在于它并不总是返回相同的结果:它将在每个查询中返回按starcount排序的10个随机存储库,而不是绝对前10位。
最重要的是,我想获得开源的软件。
我使用查询
query{
licenses{name}
}
以获取许可证列表,但我不知道这是否是详尽的列表(似乎缺少诸如MIT之类的某些许可证)。根据文档,它是
返回已知的开源许可证列表。
如何获取许可证的详尽列表并将其添加到上面的主要查询中,以使我的研究更加精确?
我似乎找不到明确的答案,因为有关GitHub的GraphQl api的文档稀缺且含糊不清。
谢谢
答案 0 :(得分:0)
我从GitHub支持中获得了关于结果不一致的原因的部分解释:这是由于查询运行时间过长导致超时的事实。
对于我们的搜索基础结构而言,某些查询在计算上非常昂贵。为了让所有人都能快速搜索,我们限制了单个查询可以运行多长时间。在极少数情况下,当查询超过时间限制时,搜索会返回超时之前找到的所有匹配项,并通知您发生了超时。
达到超时并不一定意味着搜索结果不完整。这只是意味着查询在搜索所有可能的数据之前已被终止。
我们的团队在这里写过:
https://help.github.com/articles/troubleshooting-search-queries/#potential-timeouts
鉴于这种现实,这些超时可能会导致分页浏览结果时出现不一致的情况。我们看到了如何在将来的搜索迭代中改善这一点,因此我们已经通知我们的团队,以便他们知道,尽管我们不能对特定的更改做出任何保证。
编辑:由支持人员提供,添加query: "language:javascript stars:>1600"
(1600或多或少是前3000次重复的最小恒星计数,但需要足够大才能缩小搜索范围)将始终提供前10个回购订单按星星。