Як шукати в 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.