4

以下の条件に一致するコミットについて、github でリポジトリを高度に検索したいと思います。

  • 言語: Javascript
  • 作成: [2011-01-01 TO NOW]
  • プッシュ: [2012-05-01 TO NOW]
  • フォーク: [100 TO *]
  • サイズ:[100~1000] //(kb)

github が Lucene を使用して検索を実行していることは知っていますが、検索するとクエリ構文に関するドキュメントが見つかりません。apache Lucene ドキュメントのガイドラインに従うと、「無効なクエリ構文」というメッセージが表示されることがよくあります。

私の個人的なクエリでは、言語、サイズ、フォークのクエリは問題なく通過しましたが、日付に基づいてクエリ構文を実行するための適切な一致を見つけるのにまだ問題があります。

日付クエリにタイムスタンプを含めることは必須ですか?
NOW - 3MONTHS のような日付を計算できますか?
たとえば、今から 4 か月前に作成されたリポジトリを検索するにはどうすればよいでしょうか?

編集:

github サポートに問い合わせたところ、Solr クエリ構文を使用しているため、 などの計算を使用して日付範囲クエリを実行できるとのことNOW - 4MONTHSでしたが、何らかの理由でうまく機能しないか、これらのフィルターの仕組みがわかりません。操作 (作成およびプッシュ)。

それをテストするために、メイン言語として Javascript を使用してリポジトリを見つけようとしました。これは両方ともコンボ ボックスから選択し、[created] フィルターを使用して検索し、奇妙な結果が得られることを確認しました。

最初の検索では、今日から 12 か月前までに作成された JavaScript リポジトリを見つけようとします。

作成:[現在-12 か月/日から現在/日]

これにより、合計 233500 のリポジトリが得られ、上部に「twitter/bootstrap」リポジトリをリストしました。

2 回目の検索では、今日から 24 か月前までに作成された Javascript リポジトリを見つけようとしました。

作成:[今-24 か月/日から現在/日]

リポジトリが以前よりも少なくなり、合計で 11867 になるだけでなく、結果ページに「twitter/bootstrap」リポジトリがリストされなくなりました (2 回目の検索で最初のリポジトリが「含まれている」ため、これは間違っていると思います)。 )。最初の結果は「twitter/bootstrap」よりもウォッチャーが少なく、ウォッチャー数で結果を並べると、一番上にないのは間違っています!

サイトにバグがあると言っているわけではありませんが、日付範囲で計算を行う方法がわかりません。誰かが私の問題を明確にするのを手伝ってくれることを願っています。

4

3 に答える 3

2

2012 年 11 月 26 日 (「検索構文の改善」) ( Tim Peaseによる) 以降、比較および範囲基準のための Solr スタイルの構文は、もはや唯一の代替手段ではないことに注意してください。

したがって、星が 10 個を超えるアイテムを検索すると、次のようになります。

stars:[10 TO *]

今は次のとおりです。

stars:>10

ただし、範囲は現在のように Solr のような構文をサポートしていません。日付を指定する必要がありますが、タイムスタンプは必要ありません。

cats pushed: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」) を使用して星の数を取得します。

于 2012-12-01T17:44:39.783 に答える
2

見苦しいですが、これらの日付クエリを特別に解釈する検索をレイヤーで囲むことができます。たとえば、クエリを Lucene に渡す前に、"Created:[NOW-4MONTHS to NOW]" を "Created:[2012-01-21 TO 2012-05-20]" に書き換えます。

このアプローチで発生する問題には、次のようなものがあります。

  • ラッパー クエリ構文を考え出す必要があります。
  • ラッパー クエリ構文を正しく解析する必要があります。
  • ラッパー クエリ構文を Lucene の構文に正しく書き直す必要があります。

私の知る限り、範囲クエリにはサブクエリを含めることができないため、特に日付/時間クエリ。

于 2012-05-20T22:43:32.927 に答える
1

正確な構文については、Solr のドキュメント ページを確認してください: http://wiki.apache.org/solr/SolrQuerySyntax

日付検索の場合、構文は次のようになります。

created:[2008-01-01T00:00:00Z TO NOW]
于 2012-06-21T13:04:39.693 に答える