• Github搜索那些事


    前言

    一个合格的开发者,应该要熟练地使用Google、Baidu等搜索引擎(不然怎么复制别人的代码)。而搜索引擎为了方便用户的使用,基本都提供了高级搜索功能。而今天介绍的Github,作为全球最大的同性交友网站,存储的代码量可能是全世界最多的。为了方便大家寻找自己需要的代码,同样提供了很多方便的高级搜索语法。


    搜索简介

    先上文档:https://help.github.com/en/github/searching-for-information-on-github。
    此文档为Github官网介绍搜索语法的文档,提供各种语言版本,比如中文。

    搜索入口

    基本每个github页面左上角都有个搜索框,可直接输入关键字进行搜索。或者也有专门的搜索页面:https://github.com/search 或者高级搜索页面:https://github.com/search/advanced

    搜索底层实现

    简单提一句:github的搜索使用了ElasticSearch集群来支持。每当有提交进入github时,索引就会建立。每当Issues和PR创建或者修改时也会建立索引。如果对ES比较熟悉的话,理解起来更快一些。

    初级搜索语法

    想搜啥就输入啥就好了

    高级搜索语法

    高级搜索语法简单而言就是:

    1. 将资源分类

    一般我们搜索的都是从代码内容中搜索。而实际上github上的资源不仅仅是代码。还有比如:Repositories、Topics、Issues and pull requests、Code、Commits、Users、Packages、Wikis。

    1. 对每一类资源的几乎每个属性都进行了搜索的支持

    比如Rspositories的名称、Stars、Created间等。比如Code的所属Repository、User、Path、Language、Filename、extension等。

    1. 支持不同属性的交并集查询,支持数值、日期等搜索

    比如:user:dytttf stars:>10 created:>2010-01-01

    高级搜索示例

    高级搜索限制

    • 不支持长度超过 256 个字符的查询
    • 无法使用超过五个 AND、OR 或 NOT 运算符构造查询
    • 日期格式仅支持:ISO8061,即YYYY-MM-DD 或者 YYYY-MM-DDTHH:MM:SS+00:00
    • 必须登录才能跨所有公共仓库搜索代码,非登录状态下搜索的仓库是不全的
    • 只有默认分支编索引进行代码搜索
    • 只有小于 384 KB 的文件可搜索
    • 只有少于 500,000 个文件的仓库可搜索
    • 除了 filename 搜索以外,搜索源代码时必须始终包括至少一个搜索词。 例如,搜索 language:javascript 无效,而搜索 amazing language:javascript 有效。(BUT 感觉这条限制并不存在)
    • 无法使用以下通配符作为搜索查询的一部分:. , : ; / ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]. 搜索只会忽略这些符号

    一些有趣的搜索

    如何寻找最火爆的项目

    通过仓库的star数来筛选:stars:>100000 然后发现第一名竟然从来没有听说过,看来是在下孤陋寡闻了。

    如何寻找人气最高的大神

    查找followers大于某个值的用户:followers:>=50000 然后你会发现阮一峰真NB。

    如何看到当前github的体量

    在搜索首页你会看到搜索框上出现下列语句之一(好像是随机的,当前时间20200222):

    • Search more than 50M users
    • Search more than 491M issues
    • Search more than 155M repositories

    而在20200211,出现的是:

    • Search more than 49M users

    如何找到github最早注册的用户

    查找用户,并按照创建时间筛选:created:<2008-01-01
    如果你想知道github用户增长趋势,只要不断变化时间搜索就好了。

    最后

    一个简单的爬虫,让你看清github的用户趋势:https://github.com/dytttf/little_spider/tree/master/github

  • 相关阅读:
    androidimage: load large bitmap Efficiently
    display log information in terminal
    黑客人物介绍
    Linux 基础入门学习
    网络攻防 第四周学习总结
    网络攻防 第二周学习总结
    网络攻防 第三周学习总结
    SpringBoot入门Demo(Hello Word Boot)
    jquery的json对象与字符串之间转换
    Intellij IDEA导入web项目详解(解决访问的404)
  • 原文地址:https://www.cnblogs.com/dyfblog/p/12347916.html
Copyright © 2020-2023  润新知