写点什么

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:535973

评论

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

有人问你什么是CAP?你就把这篇文章发给他

李子捌

redis CAP理论 28天写作 12月日更

我的应用 OOM 了,我该做点什么?

JavaEdge

JVM 签约计划第二季

【Dart 专题】Factory 工厂构造函数

阿策小和尚

28天写作 0 基础学习 Flutter Android 小菜鸟 12月日更

1.《重学JAVA》开篇

杨鹏Geek

Java Java 25 周年 28天写作 12月日更

架构训练营 - 模块五作业

VegetableBird

架构实战营 架构师实战营 「架构实战营」

Prometheus Exporter (十四)MySQL Server Exporter

耳东@Erdong

MySQL Prometheus 28天写作 12月日更

模块五课后作业-设计微博系统中评论架构

断水风春

架构实战营

为什么我们需要Pulsar?

博文视点Broadview

面试官:重写 equals 时为什么一定要重写 hashCode?

王磊

dart系列之:HTML的专属领域,除了javascript之外,dart也可以

程序那些事

flutter dart 程序那些事 12月日更

数据也需要滴血认亲?

Justin

大数据 数据治理 28天写作

生产环境的线程池出问题了,我到底该如何正确使用线程池?

JavaEdge

Java java 并发 签约计划第二季

大厂算法面试之leetcode精讲17.栈

全栈潇晨

LeetCode 算法面试

为什么我们需要Pulsar?

博文视点Broadview

我的Spring AOP没生效,我该如何排查?

JavaEdge

Spring Framework 签约计划第二季

大厂算法面试之leetcode精讲18.队列

全栈潇晨

算法 LeetCode

react源码解析12.状态更新流程

buchila11

React React Hooks

从deadline和被狗追说起(2/28)

赵新龙

28天写作

博客?Newsletter?付费订阅?Papyrus 都帮你搞定!

遇见

程序员 博客 Blog newsletter

react源码解析11.生命周期调用顺序

buchila11

React React Hooks

AOP+MybatisPlus 优化特殊的日志模块

4ye

Java spring 程序员 后端 签约计划第二季

小伙伴如何更有效的自学java开发

@零度

JAVA开发 自学java

微信小程序开发:新建文件报错Error:pages/xxx/xxx.json Expecting ’STRING’,’NUMBER’,’NULL’,’TRUE’

三掌柜

28天写作 12月日更

DDD 领域驱动设计落地实践系列:微服务拆分之道

慕枫技术笔记

后端 签约计划第二季

服务器宕机了,除了坐等,我还能做点什么?

JavaEdge

JVM 签约计划第二季

模块五作业

panxiaochun

架构实战营

架构训练营 Week1 作业

红莲疾风

「架构实战营」

听说过python协程没?听说过 asyncio 库没?都在这一篇博客了

梦想橡皮擦

12月日更

自定义规则删除过期文件(linux)

liuzhen007

28天写作 12月日更

Java本地事务失效了,线上应该如何排查?

JavaEdge

Spring Framework 签约计划第二季

Git进阶(五):git 分支管理策略

No Silver Bullet

git 学习 12月日更

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