Github上的高级搜索?

4
我想在GitHub上进行高级搜索,以找到符合以下条件的提交:
语言:JavaScript 创建时间:[2011-01-01至今] 推送时间:[2012-05-01至今] 分支数:[100至*] 大小:[100至1000] //(kb)
我知道GitHub使用Lucene来执行搜索,但是在搜索周围时,我找不到任何关于查询语法的文档,如果我遵循Apache Lucene文档的指导方针,我经常会得到“无效的查询语法”消息。
对于我的个人查询,我已经通过了语言、大小和分支查询,但我仍然有问题,无法找到一个好的匹配项来执行基于日期的查询语法。
是否必须在日期查询中包括时间戳? 我能否计算日期,例如NOW-3MONTHS? 例如,如何搜索4个月前创建的repo到现在?
编辑:
我与GitHub支持人员交谈,他们告诉我他们使用Solr查询语法,允许使用诸如NOW-4MONTHS之类的计算进行日期范围查询,但由于某种原因,它对我来说不起作用,或者我只是不理解这些过滤器的操作(创建和推送)。
只是为了测试它,我尝试查找任何Repo,其中JavaScript是主要语言,两者都从组合框中选择,然后尝试使用[created}过滤器进行搜索,看看我有什么奇怪的结果。
对于第一次搜索,我尝试查找在今天和12个月前之间创建的任何JavaScript repo。
created:[NOW-12MONTHS / DAY TO NOW / DAY]
这给了我总共233500个Repos,我已经将“twitter / bootstrap” repo列在顶部。
对于第二次搜索,我尝试查找在今天和24个月前之间创建的任何JavaScript repo。
created:[NOW-24MONTHS / DAY TO NOW / DAY]
它不仅给我比以前少的repo,总共11867个,而且我不再在结果页面中列出“twitter / bootstrap” repo(我认为这是错误的,因为我的第二个搜索“包含”第一个)。第一个结果的观察者比“twitter / bootstrap”少,如果我按观察者计数对结果排序,将其排在首位将是错误的!
我并不是说网站上有漏洞,但我只是不明白如何使用日期范围进行计算。希望有人能帮助我澄清我的问题。
3个回答

2
请注意,自2012年11月26日(“搜索语法改进”)以来(由Tim Pease完成),Solr风格的比较和范围条件语法不再是唯一的选择。
因此,搜索具有超过10个星的项目看起来像:
stars:[10 TO *]

现在是:
stars:>10

然而,范围不支持类似Solr的语法,如现在,您需要指定日期,但不带时间戳。

猫 推送:2012-04-30..2012-07-04


更新于2013年8月:现在您有更多的搜索API示例
 curl -ni "https://api.github.com/search/repositories?q=more+useful+keyboard" -H 'Accept: application/vnd.github.preview'

星星和观察者处于过渡期中。在这个过渡期完成之前,您可以使用旧术语(即“watchers_count”)来获取星星的数量。

注意:语法仍然有效,适用于全新的搜索 - 2013年1月。 - VonC

2

虽然不太美观,但您可以在查询周围包装一层,特别解释这些日期查询。例如,在将查询传递给Lucene之前,将“Created:[NOW-4MONTHS to NOW]”重写为“Created:[2012-01-21 TO 2012-05-20]”。

使用这种方法时可能会遇到以下问题:

  • 您需要想出包装查询语法。
  • 您需要正确解析包装查询语法。
  • 您需要正确将包装查询语法重写为Lucene的语法。

据我所知,范围查询不能在其中包含子查询,因此您可以使用正则表达式来检测日期范围查询,特别是如果您可以指定日期/时间查询的特定字段名称。


谢谢您的好意 :) 我想我不想解析查询,我只想知道为什么对我来说它不能正常工作,如果github允许Solr查询语法,那么我可以使用类似NOW - xMONTHS这样的句子。 - denica

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接