Como pesquisar no github para obter correspondências exatas (como as cotações do Google)

216

Eu posso pesquisar correspondências exatas do google usando aspas como "system <<-". Como fazer a mesma coisa no github? Eu não posso fazer isso funcionar.

Apenas um aprendiz
fonte

Respostas:

128

Você não pode. As regras oficiais de pesquisa do GitHub :

Devido à complexidade da pesquisa de código, existem algumas restrições sobre como as pesquisas são realizadas:

  • Somente a ramificação padrão é considerada. Na maioria dos casos, este será o ramo principal .
  • Somente arquivos menores que 384 KB são pesquisáveis.
  • Você sempre deve incluir pelo menos um termo de pesquisa ao pesquisar o código-fonte. Por exemplo, procurar language:gonão é válido, enquanto amazing language:goé.
  • No máximo, os resultados da pesquisa podem mostrar dois fragmentos do mesmo arquivo, mas pode haver mais resultados dentro do arquivo.
  • Você não pode usar os seguintes caracteres curinga como parte de sua consulta de pesquisa :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    A pesquisa simplesmente ignorará esses símbolos.

Gambiarra:

Se você precisar procurar em um único repositório, poderá cloná-lo localmente e usar greppara encontrar a string exatamente:

grep -r "system <<-" /repository_dir
DenisKolodin
fonte
351
Isso é terrível. Por que eles não consertam isso? Idealmente, eu deveria poder pesquisar com uma regex. Onde eu vou protestar contra isso? :)
Daniel Darabos 02/02
10
Pedi um suporte e eles responderam: "A capacidade de escapar de caracteres especiais na pesquisa do GitHub é um recurso solicitado com frequência. Embora não possa fazer promessas, vou marcar com +1 a idéia em nossa lista interna de solicitações de recursos". . Eu acho que depende do tamanho do índice: muitos códigos no github contém.
DenisKolodin
10
Eu acredito que este é um desafio de indexação. Fazer com que a pesquisa de aspas duplas funcione é provavelmente uma ordem de magnitude mais difícil que a implementação atual. É provável que fazer uma pesquisa de regex funcione> 1 ordem de magnitude mais difícil ou até mesmo pedir problemas .
precisa saber é o seguinte
14
e quanto a seqüências literais que contêm ponto ... como ldap.mycomp.com?!?!?! Eu não preciso de um regex, eu só quero uma pesquisa de seqüência de caracteres LITERAL
Jason
1
Isso não é corrigido porque eles usam a pesquisa elástica; portanto, eles devem reindexar todos os dados com um novo campo para levar em consideração; isso significa muito disco.
Thomas Decaux
44

Você pode usar o Google diretamente.

Que tal agora?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com
Mrgloom
fonte
81
Isso não pressupõe que o Google tenha acesso ao seu repositório? Esse não deve ser o caso de acordos privados.
Joel B
1
funciona dentro de repositórios, como:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
sites
1
@juanpastas você pode dar um exemplo completo da string de pesquisa?
mrgloom
15
Isso fez mais sentido quando o Google ainda respeitava as aspas para forçar uma pesquisa exata.
Kylotan
1
@FullMetalFist Parece que sim, por exemplo"your_string_to_search" site:https://github.com filetype:cpp
mrgloom 10/10
17

Hoje eu estava tentando procurar uma correspondência exata de filter class arquivos nomeados logback.xmlem qualquer repositório no Github. E eu vim com a seguinte consulta que fez o trabalho.

"filter class" in:file filename:logback.xml

Para habilitar correspondências exatas com aspas, você deve seguir sua pesquisa com o modificador "in: file". As correspondências não são exatamente exatas, a palavra "classe" terá que seguir a palavra "filtro", mas parece que pode haver 0 ou mais caracteres de espaços ou símbolos entre as duas palavras.

cessação
fonte
14
Não vejo diferença de comportamento ao pesquisar com ou sem in:file.
Daniel Darabos
2
Eu também não, mas o fato de que "foo bar" entre aspas não procurar palavras adjacentes é uma notícia muito útil para mim
Beni Cherniavsky-Paskin
3

Adicionando à resposta do @ mrgloom , se você estiver procurando por código em uma linguagem de programação específica no Github usando o Google, poderá fazer algo assim na barra de pesquisa do Google:

  • indique a sequência específica que você está procurando usando o operador de pesquisa "intext:"
  • adicione a linguagem de programação de seu interesse, usando o operador "ext:" (por exemplo, "ext: py", "ext: R", "ext: rb" etc.)
  • pesquise em todos os repositórios públicos no Github usando o operador "site:" mrgloom mencionado.

Exemplo:

intext:"%% 2 == 0" ext:R site:github.com

Resultados do Google do exemplo

silviaegt
fonte
1
intext:".set(" ext:JS site:github.comnão funcionou: /
Aditya MP
Você está certo! Eu não entendo o porquê ... Eu tentei intext:"set(" inurl:.js site:github.come meio que funciona, mas não realmente
silviaegt
1
Por isso, continuei lendo e aparentemente os parênteses são ignorados nas pesquisas no Google. No entanto, não entendo por que o operador "ext" não funciona. De acordo com este é um alias não documentada para "filetype", mas não tenho certeza por que "js" não seria considerado como um
silviaegt