Cách tìm kiếm trên github để có kết quả khớp chính xác (như những gì trích dẫn dành cho Google)


216

Tôi có thể tìm kiếm kết quả chính xác từ google bằng cách sử dụng dấu ngoặc kép như thế "system <<-". Làm thế nào để làm điều tương tự cho github? Tôi không thể làm cho nó hoạt động.

Câu trả lời:


128

Bạn không thể. Các quy tắc tìm kiếm GitHub chính thức :

Do sự phức tạp của mã tìm kiếm, có một vài hạn chế về cách thực hiện tìm kiếm:

  • Chỉ có chi nhánh mặc định được xem xét. Trong hầu hết các trường hợp, đây sẽ là chủ chi nhánh.
  • Chỉ các tệp nhỏ hơn 384 KB là có thể tìm kiếm.
  • Bạn phải luôn bao gồm ít nhất một thuật ngữ tìm kiếm khi tìm kiếm mã nguồn. Ví dụ, tìm kiếm language:gokhông hợp lệ, trong khi đó amazing language:go.
  • Nhiều nhất, kết quả tìm kiếm có thể hiển thị hai đoạn từ cùng một tệp, nhưng có thể có nhiều kết quả hơn trong tệp.
  • Bạn không thể sử dụng các ký tự đại diện sau đây như một phần của truy vấn tìm kiếm của mình :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    Tìm kiếm sẽ đơn giản bỏ qua các ký hiệu này.

Cách giải quyết:

Nếu bạn cần tìm kiếm trong một kho lưu trữ duy nhất, bạn có thể sao chép nó cục bộ và sử dụng grepđể tìm chuỗi chính xác:

grep -r "system <<-" /repository_dir

351
Điều này thật tồi tệ. Tại sao họ không sửa nó? Lý tưởng nhất là tôi có thể tìm kiếm với regex. Tôi đi đâu để phản đối điều này? :)
Daniel Darabos 2/2/2016

10
Tôi đã hỏi một người hỗ trợ và họ đã trả lời: "Khả năng thoát các ký tự đặc biệt trong tìm kiếm GitHub là một tính năng được yêu cầu thường xuyên. Trong khi tôi không thể thực hiện bất kỳ lời hứa nào, tôi sẽ +1 ý tưởng trong danh sách Yêu cầu tính năng nội bộ của chúng tôi." . Tôi nghĩ rằng nó phụ thuộc vào kích thước chỉ mục: có quá nhiều mã github chứa.
DenisKolodin 4/2/2016

10
Tôi tin rằng đây là một thách thức lập chỉ mục. Làm cho công việc tìm kiếm trích dẫn nguyên văn đôi có thể khó hơn so với triển khai hiện tại. Làm cho một công việc tìm kiếm regex có khả năng> 1 đơn hàng cường độ khó hơn hoặc thậm chí có thể yêu cầu sự cố .
Matt Kocaj

14
những gì về chuỗi chữ có chứa dấu chấm ... như thế ldap.mycomp.comnào?!?!?! Tôi không cần regex, tôi chỉ muốn tìm kiếm chuỗi LITITH
Jason

1
Điều này không khắc phục được vì họ sử dụng elaticsearch, vì vậy họ nên lập chỉ mục lại tất cả dữ liệu với một trường mới để xem xét, điều này có nghĩa là rất nhiều đĩa.
Thomas Decaux

44

Bạn có thể sử dụng Google trực tiếp.

Còn cái này thì sao?

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

81
Không phải điều đó cho rằng Google có quyền truy cập vào repo của bạn sao? Đó không phải là trường hợp cho repos tư nhân.
Joel B

1
nó hoạt động bên trong repos, như:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
các trang web

1
@juanpastas bạn có thể cho ví dụ đầy đủ về chuỗi tìm kiếm không?
mrgloom

15
Điều này có ý nghĩa hơn khi Google vẫn tôn vinh các trích dẫn để buộc tìm kiếm chính xác.
Kylotan

1
@FullMetalFist Hình như có, chẳng hạn"your_string_to_search" site:https://github.com filetype:cpp
mrgloom

17

Hôm nay tôi đã cố gắng tìm kiếm một kết quả khớp chính xác filter classtrong các tệp có tên logback.xmltrong bất kỳ repo nào trên Github. Và tôi đã đưa ra truy vấn sau đây đã thực hiện công việc.

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

Để bật kết hợp chính xác với dấu ngoặc kép, bạn cần theo dõi tìm kiếm của mình bằng công cụ sửa đổi "in: file". Các kết quả không hoàn toàn chính xác, từ "lớp" sẽ phải theo từ "bộ lọc", nhưng dường như có thể có 0 hoặc nhiều khoảng trắng hoặc ký tự ký tự giữa hai từ.


14
Tôi thấy không có sự khác biệt trong hành vi khi tìm kiếm có hoặc không có in:file.
Daniel Darabos 2/2/2016

2
tôi cũng vậy, nhưng thực tế là "foo bar" trong ngoặc kép tìm kiếm các từ liền kề là tin tức rất hữu ích với tôi
Beni Cherniavsky-Paskin

3

Thêm vào câu trả lời của @ mrgloom , nếu bạn đang tìm mã bằng ngôn ngữ lập trình cụ thể trong Github bằng Google, bạn có thể làm điều gì đó như thế này trong thanh tìm kiếm của Google:

  • nêu chuỗi cụ thể mà bạn đang tìm kiếm bằng cách sử dụng toán tử tìm kiếm "intext:"
  • thêm ngôn ngữ lập trình mà bạn quan tâm, sử dụng toán tử "ext:" (nghĩa là "ext: py", "ext: R", "ext: rb", v.v.)
  • tìm kiếm trong tất cả các repos công khai trong Github bằng cách sử dụng toán tử "site:" mrgloom đã đề cập.

Thí dụ:

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

Kết quả Google từ ví dụ


1
intext:".set(" ext:JS site:github.comkhông hoạt động: /
Aditya MP

Bạn đúng! Tôi không hiểu tại sao ... Tôi đã thử intext:"set(" inurl:.js site:github.comvà nó hoạt động, nhưng không thực sự
silviaegt

1
Vì vậy, tôi tiếp tục đọc và dường như dấu ngoặc đơn bị bỏ qua trong các tìm kiếm google Tuy nhiên, tôi không hiểu tại sao toán tử "ext" không hoạt động. Theo đó, đây là một bí danh không có giấy tờ cho "filetype", nhưng không chắc tại sao "js" sẽ không được coi là một
silviaegt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.