阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

GitHub 全新代码搜索引擎正式上线,但用户对新产品“不买账”

  • 2023-05-13
    北京
  • 本文字数:1404 字

    阅读完需:约 5 分钟

GitHub 全新代码搜索引擎正式上线,但用户对新产品“不买账”

18 个月后,GitHub 终于宣布向所有用户开放全新的代码搜索引擎。


在软件开发的过程中,阅读和理解代码是一项基础工作。无论是实现新功能,还是查找 bug,开发人员首先要阅读和理解代码,这个时间甚至多于编写代码。如果能够像搜索引擎一样,快速找到开发需要的上下文代码,那么软件开发的效率将会大幅提升。

 

但是 GitHub 上可供搜索的代码浩如烟海,全球代码仓库已经超过 2 亿,并且这些代码不是静态的:它在不断变化,这就给代码搜索引擎带来了相当大的挑战。

 

上线 15 年来,GitHub 一直努力给大家提供一个好用的代码搜索引擎,但一直不能如愿。因为之前的代码搜索基于 Elasticsearch,但代码搜索与一般文本搜索有着很大的区别,毕竟代码是写给机器来理解的,需要利用代码之间的结构和相关性,并且还需要支持正则表达式进行搜索。

 

从 2020 年开始,GitHub 开始全力以赴构建自定义搜索引擎。这款代码搜索引擎被命名为 Blackbird,用 Rust 编写,它创建并增量维护一个由 Git blob 对象 ID 分片的代码搜索索引。增量的形式能节省大量存储空间,并保证了跨分片的均匀负载分布。同时支持对文档内容进行正则表达式搜索,还可以捕获额外的元数据,例如它还维护符号定义的索引。最终 Blackbird 满足了大家的性能目标:速度非常快,索引也非常紧凑,重量约为(去重)语料库大小的 1/3。

 

该代码搜索引擎于 2021 年底推出预览版,这周,GitHub 宣布其“普遍可用”。

 

除代码搜索引擎是全新的之外,GitHub 还推出了一个完全重新设计的搜索界面。新界面不仅提供建议与补全,还能对搜索结果进行智能分类。

 


另外,研发团队还重新设计了 GitHub 的代码视图,将搜索、浏览和代码导航紧密集成起来。

 


GitHub 全新的代码搜索正式上线后,有网友大赞其功能:“这是 5 年来最令人印象深刻的产品”,“很高兴能够在代码搜索中包含特殊字符!”

 

但不幸的是,也有不少用户给出了“不满意的”的反馈,要求有一种方法可以返回到旧版本。

 

CameronEnglish:“新的查看体验缓慢而糟糕。我并不真正关心新的代码搜索功能,因为我已经有了相关工具。视图更改极大地恶化了 Github 的体验。”

 

Shortnamesalex:“请给我们一个恢复到旧 UI 的选项。这个新 UI 太糟糕了。一切都感觉太局促但同时又太宽,而且代码字体令人眼花缭乱。”

 

还有网友说到:“我希望在编辑 Markdown 时看到对‘显示差异’功能的改进——以前,删除的内容是红色的,添加的内容是绿色的。现在这种差异却没有了。

 

但是这只是对新界面表达不满的其中几个,用户不断提出新问题:

 

 

可以说,GitHub 意识到了这些抱怨。“我们正在积极处理我们从社区收到的反馈,”公司发言人对外表示。“当我们构建新的代码搜索和代码视图时,我们优先考虑让开发人员能够快速搜索、导航和理解他们的代码,将关键信息置于上下文中,并最终提高他们的工作效率。这些优先事项仍然是我们的首要事项。”

 

参考链接:

 

https://github.blog/2023-05-08-github-code-search-is-generally-available/

https://github.com/orgs/community/discussions/54546#discussioncomment-5841984

https://www.theregister.com/2023/05/13/github_code_search_redesign_feedback/

 

2023-05-13 19:534451

评论

发布
暂无评论
发现更多内容

守护进程

书旅

php 进程 守护进程

MySQL中timestamp和datetime,你用的对么?

xcbeyond

MySQL 数据库 后端

NetPerf揭示容器间是高速路还是林荫小路

陈磊@Criss

用Ant实现Java项目的自动构建和部署

陈磊@Criss

JavaScript中的正则表达式详解

华为云开发者联盟

Java 正则表达式 程序员 字符串 语法

SpringBoot系列(六):SpringBoot 数据库操作(集成MyBatis)

xcbeyond

Java 微服务 mybatis springboot

终于知道Kafka为什么这么快了!

大头星

kafka 消息队列

重磅消息,我国数字人民币将在京津冀等具备条件地区试点

CECBC

数字货币 货币

Vue项目起步

JackWangGeek

Vue

libuv 异步模型之设计概览

Huayra

libuv 异步模型

应用研发平台特惠专场,助力企业加速数智化发展

移动研发平台EMAS

免费DDoS攻击测试工具大合集

陈磊@Criss

腾讯人均月薪7.5w,我这是又被平均了?

程序员生活志

腾讯 职场 薪资

英特尔首席架构师Raja:一个“百亿亿次级计算能力惠及每个人”的时代正在到来

最新动态

Swagger 这一个文章就够了

陈磊@Criss

从实际案例讲 Deno 的应用场景

keelii

Java typescript deno

实用心理学—没用你打我!

代码制造者

职场 职场搞笑 信息技术 人工

实践总结:在 Java 中调用 Go 代码

写代码的西瓜

分苹果

书旅

算法 LeetCode

如何从红蓝墨水中分离出红墨水?回声消除算法介绍

拍乐云Pano

音视频 WebRTC 回声消除 3A算法 音频技术

SpringBoot系列(五):SpringBoot 日志配置(logback)

xcbeyond

Java 微服务 springboot logback

Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

陈磊@Criss

分布式链路追踪Skywalking 存储模型设计

胡弦(关注公众号架构随笔录)

分布式 Skywalking 高性能 分布链路追踪

AI能写浙江高考满分作文了!在线满分作文生成器,一键圆你满分梦

程序员生活志

AI

如何正确认识区块链?

CECBC

区块链价值 区块链应用

Maven的爱恨情仇

xcbeyond

Java maven

PHP之闭包函数

书旅

面向对象 闭包 函数

如何写出完美的接口:接口规范定义、接口管理工具推荐

xcbeyond

Java 架构 接口规范

统一软件开发过程(RUP)的概念和方法

雯雯写代码

Facebook开源的数据Mock:Memisis详解

陈磊@Criss

【写作群星榜】8.1~8.14 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

GitHub 全新代码搜索引擎正式上线,但用户对新产品“不买账”_语言 & 开发_Tina_InfoQ精选文章