GitHub のリポジトリ検索を結構使うのですが、「なんかいまいちヒットしないな」と思うことが多々あります。そこでその辺の挙動を簡単に調べ、どう対処すればいいかをまとめてみました。
リポジトリ検索とは
以下のことです。
トップページや自分のプロフィールページでは GitHub 内全域を検索できます。
また、リポジトリのページではそのリポジトリ内を検索できます。
結論
- 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 は 部分一致はするが単語一致していない ためヒットしません。
ここで「単語一致とは何か」という話になりますが、詳しい仕様は私もわかりません 見た感じでは「スペースやら ""
やら ''
やらで区切られた一繋がりの文字列」だなという印象です。この単語一致についても例を上げると、
print('こんにちは世界')
上記の日本語部分の単語とは「こんにちは」でも「世界」でもなく、「こんにちは世界」のみです。意味的(セマンティック)な単語ではなく構文的(シンタックス)な単語、とでも言えばいいでしょうか。
おわりに
軽く調べた程度の小ネタでしたが、GitHub のリポジトリ検索に関するモヤモヤが晴れて、少しだけ付き合いやすくなった気がします