git - Github 上的高级搜索?

标签 git lucene github

我想在 github 下高级搜索 repos 以查找符合以下条件的提交:

  • 语言:Javascript
  • 创建时间:[2011-01-01 至今]
  • 已推送:[2012-05-01 至今]
  • fork :[100 TO *]
  • 大小:[100 到 1000]//(kb)

我知道 github 使用 Lucene 来执行它的搜索,但是四处搜索我找不到任何关于查询语法的文档,如果我遵循 apache Lucene 文档的指南,我经常会得到“无效的查询语法”消息。

对于我个人的查询,我已经毫无问题地传递了语言、大小和 fork 查询,但我仍然无法找到合适的匹配项来执行基于日期的查询语法。

是否必须在日期查询中包含时间戳?
我可以对现在 - 3 个月这样的日期进行一些计算吗?
例如,我如何搜索 4 个月前到现在创建的存储库?

编辑:

我与 github 支持人员交谈,他们告诉我他们使用 Solr 查询语法,该语法允许使用 NOW - 4MONTHS 等计算进行日期范围查询,但由于某种原因它不起作用对我来说没问题,否则我只是不明白这些过滤器是如何运作的(创建和推送)。

只是为了测试它,我试图找到任何以 Javascript 作为主要语言的 Repos,这两个都是从组合框中选择的,然后尝试使用 [created} 过滤器进行搜索,看看我有什么奇怪的结果。

对于第一次搜索,我尝试查找从今天到 12 个月前创建的任何 javascript 存储库。

创建:[NOW-12MONTHS/DAY TO NOW/DAY]

这给了我总共 233500 个 repo 协议(protocol),我在顶部列出了“twitter/bootstrap” repo 协议(protocol)。

对于第二次搜索,我试图找到从今天到 24 个月前创建的任何 Javascript 存储库。

创建:[NOW-24MONTHS/DAY TO NOW/DAY]

不仅它给我的 repo 比以前少了,总共 11867第一个)。第一个结果的观察者少于“twitter/bootstrap”,如果我按观察者计数排序结果,那么不把它放在顶部是错误的!

我并不是说网站上有错误,但我只是不明白它是如何使用日期范围进行计算的。希望有人能帮我澄清我的问题。

最佳答案

它很难看,但您可以在搜索周围包裹一层,专门解释这些日期查询。例如,在将查询传递给 Lucene 之前,将“Created:[NOW-4MONTHS to NOW]”重写为“Created:[2012-01-21 TO 2012-05-20]”。

使用这种方法会遇到的问题包括:

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

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

关于git - Github 上的高级搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618509/

相关文章:

Git:打开没有冲突的 merge 工具

git - 如何在 Git 中记录文件

elasticsearch - 在同一映射中使用not_analyzed和Analyzer时会发生什么?

elasticsearch - 如何在Elasticsearch中对未分析的字符串执行类似正则表达式的搜索

git - 运行 "git log"未出现提交历史记录

git - git remote update 和 fetch 之间的区别?

git - 存储使用 --intent-to-add 添加的文件

asp.net-mvc-3 - 使用 .net Web 应用程序实现 Solr

ruby-on-rails - 将Rails应用放在公共(public)git中,将私有(private)详细信息保密

windows - 在 Windows 上更新 Git Bash 后,仍然显示旧版本