Як шукати в github, щоб отримати точні збіги (як, наприклад, котирування для Google)


218

Я можу шукати точні збіги з google, використовуючи подібні лапки "system <<-". Як зробити подібну річ для github? Я не можу змусити його працювати.

Відповіді:


130

Ви не можете. Офіційні правила пошуку GitHub :

Через складність коду пошуку існує кілька обмежень щодо здійснення пошукових запитів:

  • Вважається лише гілка за замовчуванням. У більшості випадків це буде головна галузь.
  • Можна шукати лише файли розміром до 384 Кб .
  • Ви завжди повинні включати принаймні один пошуковий термін під час пошуку вихідного коду. Наприклад, пошук language:goнедійсний, поки amazing language:goє.
  • У максимум, результати пошуку можуть показувати два фрагменти з одного файлу, але може бути більше результатів у файлі.
  • Ви не можете використовувати такі символи підстановки як частину пошукового запиту :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    Пошук просто ігнорує ці символи.

Обхід:

Якщо вам потрібно здійснити пошук у одному сховищі, ви можете клонувати його локально та використовувати grepсаме такий рядок:

grep -r "system <<-" /repository_dir

354
Це жахливо. Чому вони не виправлять це? В ідеалі я повинен мати можливість пошуку за допомогою регулярного вираження. Куди мені піти протестувати? :)
— Даніель Дарабос

10
Я попросив підтримку, і вони відповіли: "Можливість уникати спеціальних символів у пошуку GitHub - це часто запитувана функція. Хоча я не можу давати жодних обіцянок, я поставлю +1 цій ідеї у нашому внутрішньому списку запитів на функції". . Я думаю, це залежить від розміру індексу: занадто багато кодів github містить.
— Денис Колодін

10
Я вважаю, що це є проблемою індексації. Зробити дослідницьку роботу з дослідним подвійним цитуванням можна на порядок важче, ніж теперішня реалізація. Зробити роботу з пошуку регулярних виразів, ймовірно,> на 1 порядок складніше або навіть, можливо, попросити неприємностей .
— Метт Кокай

14
як щодо буквальних рядків, що містять крапки ... як ldap.mycomp.com?!?!?! Мені не потрібен регулярний вираз, я просто хочу ЛІТЕРАЛЬНИЙ рядок
— Jason

1
Це не виправлено, оскільки вони використовують еластичний пошук, тому їм слід повторно індексувати всі дані новим полем, щоб взяти їх до уваги, це означає багато диску.
— Томас Деко

44

Ви можете використовувати Google безпосередньо.

Як щодо цього?

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

81
Хіба це не передбачає, що Google має доступ до вашого репо? Це не повинно стосуватися приватних репостів.
— Джоель Б

1
він працює всередині репостів, як-от:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
— сайти

1
@juanpastas Ви можете навести повний приклад пошукового рядка?
— mrgloom

15
Це отримало більше сенсу, коли Google все ще шанував цитати, щоб змусити точний пошук.
— Кілотан

1
@FullMetalFist Схоже, так, наприклад"your_string_to_search" site:https://github.com filetype:cpp
— mrgloom

17

Сьогодні я намагався шукати точну відповідність filter classу файлах, названих logback.xmlу будь-якому репо на Github. І я придумав наступний запит, який зробив цю роботу.

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

Щоб увімкнути точні збіги з цитатами, слідкуйте за пошуком за допомогою модифікатора "in: file". Збіги не зовсім точні, слово "клас" повинно слідувати за словом "фільтр", але, схоже, між двома словами може бути 0 або більше символів пробілів або символів.


14
Я не бачу різниці в поведінці під час пошуку з або без in:file.
— Даніель Дарабос

2
мені ні, але той факт, що "foo bar" в лапках шукає суміжні слова - дуже корисна новина для мене
— Бені Чернявський-Паскін

3

Додавши до @ mrgloom відповідь, якщо ви шукаєте код на певній мові програмування в Github за допомогою Google, ви можете зробити щось подібне на панелі пошуку Google:

  • укажіть конкретний рядок, який ви шукаєте, використовуючи пошуковий оператор "intext:"
  • додайте мову програмування, яка вас цікавить, використовуючи оператор "ext:" (тобто "ext: py", "ext: R", "ext: rb" тощо)
  • пошук у всіх публічних репортажах у Github за допомогою згаданого оператора mrgloom.

Приклад:

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

Результати Google із прикладу


1
intext:".set(" ext:JS site:github.comне працювало: /
— МП

Ти маєш рацію! Я не розумію, чому ... Я спробував, intext:"set(" inurl:.js site:github.comі це
— спрацювало

1
Тому я постійно читав, і, мабуть, круглі дужки ігноруються в пошуку Google, однак, я не розумію, чому оператор "ext" не працює. Згідно з цим, це незадокументований псевдонім для "філейтипу", але не впевнений, чому "js" не вважався б одним
— silviaegt

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.