Come cercare su Github per ottenere corrispondenze esatte (come quello che fanno le virgolette per Google)


221

Posso cercare corrispondenze esatte da google usando virgolette come "system <<-". Come fare la stessa cosa per Github? Non riesco a farlo funzionare.

Risposte:


131

Non puoi. Le regole di ricerca ufficiali di GitHub :

A causa della complessità del codice di ricerca, ci sono alcune restrizioni su come vengono eseguite le ricerche:

  • Viene considerato solo il ramo predefinito. Nella maggior parte dei casi, questo sarà il ramo principale .
  • Solo i file di dimensioni inferiori a 384 KB sono ricercabili.
  • Devi sempre includere almeno un termine di ricerca durante la ricerca del codice sorgente. Ad esempio, la ricerca language:gonon è valida, mentre lo amazing language:goè.
  • Al massimo, i risultati della ricerca possono mostrare due frammenti dallo stesso file, ma potrebbero esserci più risultati all'interno del file.
  • Non è possibile utilizzare i seguenti caratteri jolly come parte della query di ricerca :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    La ricerca ignorerà semplicemente questi simboli.

Soluzione:

Se è necessario cercare in un singolo repository, è possibile clonarlo localmente e utilizzare grepper trovare esattamente la stringa:

grep -r "system <<-" /repository_dir

355
È terribile. Perché non lo riparano? Idealmente dovrei essere in grado di cercare con una regex. Dove posso protestare per questo? :)
Daniel Darabos,

10
Ho chiesto un supporto e mi hanno risposto: "La possibilità di sfuggire a caratteri speciali nella ricerca di GitHub è una funzione richiesta di frequente. Anche se non posso fare promesse, farò +1 sull'idea nel nostro elenco interno di richieste di funzioni". . Penso che dipenda dalle dimensioni dell'indice: troppi codici contiene github.
DenisKolodin,

10
Credo che questa sia una sfida di indicizzazione. Rendere la ricerca testuale a virgolette doppie è probabilmente un ordine di grandezza più difficile dell'attuale implementazione. Far funzionare una ricerca regex è probabilmente> 1 ordine di grandezza più difficile o addirittura chiedere problemi .
Matt Kocaj,

15
che dire di stringhe letterali che contengono punti ... come ldap.mycomp.com?!?!?! Non ho bisogno di una regex, voglio solo una ricerca di stringa LITERALE
Jason,

1
Questo non è stato risolto perché usano elasticsearch, quindi dovrebbero reindicizzare tutti i dati con un nuovo campo per tenerlo in considerazione, questo significa molto disco.
Thomas Decaux,

44

Puoi usare direttamente Google.

Cosa ne pensi di questo?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com

81
Non presume che Google abbia accesso al tuo repository? Questo non dovrebbe essere il caso dei repository privati.
Gioele B

1
funziona all'interno dei repository, come:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
siti

1
@juanpastas puoi dare un esempio completo di stringa di ricerca?
mrgloom,

15
Questo aveva più senso quando Google onorava ancora le virgolette per forzare una ricerca esatta.
Kylotan,

1
@FullMetalFist Sembra sì, ad esempio"your_string_to_search" site:https://github.com filetype:cpp
mrgloom

17

Oggi stavo provando a cercare una corrispondenza esatta dei filter classfile denominati logback.xmlin qualsiasi repository su Github. E ho avuto la seguente domanda che ha fatto il lavoro.

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

Per abilitare le corrispondenze esatte tra virgolette devi seguire la tua ricerca con il modificatore "in: file". Le partite non sono del tutto esatte, la parola "classe" dovrà seguire la parola "filtro", ma sembra che ci possano essere 0 o più spazi o simboli tra le due parole.


14
Non vedo alcuna differenza nel comportamento durante la ricerca con o senza in:file.
Daniel Darabos,

2
nemmeno io, ma il fatto che "foo bar" tra virgolette cerchi parole adiacenti è una notizia molto utile per me
Beni Cherniavsky-Paskin,

4

Aggiungendo alla risposta di @ mrgloom , se stai cercando un codice in un linguaggio di programmazione specifico in Github utilizzando Google, potresti fare qualcosa del genere nella barra di ricerca di Google:

  • indica la stringa specifica che stai cercando utilizzando l'operatore di ricerca "intext:"
  • aggiungi il linguaggio di programmazione che ti interessa, usando l'operatore "ext:" (es. "ext: py", "ext: R", "ext: rb", ecc.)
  • cerca in tutti i repository pubblici in Github utilizzando l'operatore "site:" menzionato da mrgloom.

Esempio:

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

Risultati di Google dall'esempio


1
intext:".set(" ext:JS site:github.comnon ha funzionato: /
Aditya MP il

Hai ragione! Non capisco perché ... Ci ho provato intext:"set(" inurl:.js site:github.come in qualche modo funziona, ma non proprio
silviaegt

1
Quindi ho continuato a leggere e apparentemente le parentesi sono ignorate nelle ricerche su Google. Tuttavia, non capisco perché l'operatore "ext" non funzioni. Secondo questo è un alias non documentato per "filetype", ma non sono sicuro del perché "js" non sarebbe considerato come uno
silviaegt

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.