20
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitHub のリポジトリ検索を使う時には「部分一致ではなく単語一致」「Clone して Grep する」の二点を意識する

Posted at

GitHub のリポジトリ検索を結構使うのですが、「なんかいまいちヒットしないな」と思うことが多々あります。そこでその辺の挙動を簡単に調べ、どう対処すればいいかをまとめてみました。

リポジトリ検索とは

以下のことです。

トップページや自分のプロフィールページでは GitHub 内全域を検索できます。

github_search_repository.jpg

また、リポジトリのページではそのリポジトリ内を検索できます。

github_search_this_repository.jpg

結論

  • GitHub のリポジトリ検索は 部分一致ではない
  • GitHub のリポジトリ検索は 単語一致である (と思われる)
  • 部分一致で探したいなら素直に Clone してローカルで Grep とかしましょう

詳しく

stakiran/test_github_search というリポジトリを作って実験してみました。

リポジトリに hello.py というファイルがあるとします。

import sys

print('Hello.')
print('はろー')
print('こんにちは世界')

さてここでクイズです。以下の検索ワードのうち、hello.py にヒットするのはどれでしょう?

  • Q1. import
  • Q2. impor
  • Q3. はろー
  • Q4. こんにちは
  • Q5. こんにちは世界
  • Q6. ちは
  • Q7. "ちは"

正解(ヒットするもの)は以下です。

  • Q1. import
  • Q3. はろー
  • Q5. こんにちは世界

Q1 は import という単語に、Q3 は「はろー」という単語に、Q5 は「こんにちは世界」という単語に一致するため、ヒットします。Q2, Q4, Q6, Q7 は 部分一致はするが単語一致していない ためヒットしません。

ここで「単語一致とは何か」という話になりますが、詳しい仕様は私もわかりません :sweat: 見た感じでは「スペースやら "" やら '' やらで区切られた一繋がりの文字列」だなという印象です。この単語一致についても例を上げると、

print('こんにちは世界')

上記の日本語部分の単語とは「こんにちは」でも「世界」でもなく、「こんにちは世界」のみです。意味的(セマンティック)な単語ではなく構文的(シンタックス)な単語、とでも言えばいいでしょうか。

おわりに

軽く調べた程度の小ネタでしたが、GitHub のリポジトリ検索に関するモヤモヤが晴れて、少しだけ付き合いやすくなった気がします :smile:

20
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?