色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Rust語言重寫的代碼搜索引擎黑鳥系統Blackbird正式啟用

jf_wN0SrCdH ? 來源:Rust語言中文社區 ? 2023-05-11 09:52 ? 次閱讀

f407b17a-ef67-11ed-90ce-dac502259ad0.png

昨天GitHub官方發布消息,宣布其使用Rust語言重寫的代碼搜索引擎黑鳥系統Blackbird正式啟用。關于黑鳥系統的歷史和技術,今天蟲蟲就給大家普及一下。

概述

黑鳥系統的目標是實現開發人員快速搜索、導航和理解其代碼,將關鍵信息置于上下文中,并最終提高他們的工作效率。 為實現這一目標,需要實現以下功能:

首先,一個完全重新設計的搜索界面,帶有建議、補全以及對結果進行切片和切塊的能力。

其次,需要完全從頭開始構建了一個新的代碼搜索引擎。新的引擎需要非常快(大約是舊代碼搜索速度的兩倍),功能更強大(支持子字符串查詢、正則表達式和符號搜索),并且理解代碼,將最相關的結果放在排名最前面。

最后,要完全重新設計GitHub的代碼視圖,將搜索、瀏覽和代碼導航緊密集成。

f4412aae-ef67-11ed-90ce-dac502259ad0.png

Github代碼搜索歷史和問題

GitHub成立于2008年,最初使用Apache Solr來處理其代碼搜索。

f47400be-ef67-11ed-90ce-dac502259ad0.png

在Solr被并入Lucene之后。 2013年Github團隊使用Elasticsearch對其搜索進行了改造,基于Elasticsearch創建了一個新的搜索服務。

f4be7608-ef67-11ed-90ce-dac502259ad0.jpg

隨后,基于Elasticsearch搜索服務屢次出現服務終端故障。

在探索了基于通用文本搜索產品來支持代碼搜索,GitHub發現基于現有產品搭建的系統用戶體驗差,索引速度慢,托管成本高。

2020年GitHub內部開始了一個新項目黑鳥系統,用來解決搜索服務不穩定的問題。

黑鳥架構

黑鳥系統架構圖如下:

f4e1469c-ef67-11ed-90ce-dac502259ad0.png

黑鳥系統是基于Rust語言,從零開始構建搜索引擎,專門用于代碼搜索領域。

黑鳥系統所要實現的用戶體驗愿景:

能夠提出代碼問題并通過迭代搜索、瀏覽、導航和閱讀代碼獲得答案。

GitHub團隊通過實踐意識到其代碼搜索與一般文本搜索有根本的區別。

首先、代碼已經被設計成可以被機器理解,所以其內部在結構上、功能上和功能上下文上必然存在聯系性。

同時搜索代碼也有獨特的要求,需要搜索標點符號(例如,句號或左括號);不能從查詢中刪除停用詞;另外,代碼搜索還需要支持正則表達式。

最后,GitHub的巨大倉庫規模是一個很大的挑戰。其基于Elasticsearch的搜索系統,需要花費數月的時間來索引當時800萬倉庫的代碼。

目前GitHub倉庫數已經超過了2億,而且還在持續增長中,這對搜索引擎來說是個巨大的挑戰。

目前GitHub可搜索庫有4500萬公開庫,代碼總量為115TB,還有155億的相關文檔。

千萬級代碼的索引

黑鳥系統所要解決的第一個問題是如何在合理的時間內構建對這4500萬代碼庫的代碼和文檔進行索引。由Git的天然特性,其內容可通過哈希尋址并且GitHub 上實際上有很多重復內容,所以可行的策略是:

按Git blob對象ID進行分片,git對象天然這提供了一種在分片之間均勻分布文檔同時避免任何重復的好方法。由于特殊的存儲庫,不會有任何熱服務器,可以根據需要輕松擴展分片的數量。

將索引建模為樹并使用增量編碼來減少爬行量并優化索引中的元數據。元數據就像文檔出現的位置列表(路徑、分支和存儲庫)和有關這些對象的信息(存儲庫名稱、所有者、可見性等)。 對于流行內容,此數據可能非常大。

黑鳥還專門進行了設計將查詢結果在提交級別的基礎上保持一致。

當用戶從存儲庫范圍的查詢中獲取結果時,其他人可能正在對全局結果進行分頁并查看不同于先前但仍然一致的索引狀態。使用其他搜索引擎很難做到這一點。黑鳥提供這種級別的查詢一致性作為其設計的核心部分。

查詢的生命周期

在實現了對代碼的索引后,系統跟蹤查詢就比較容易實現了。比如黑鳥系統查詢是符Rail組織用于查找Ruby編程語言編寫的代碼的正則表達式,格式為:

/arguments?/org:railslang:Ruby

查詢路徑的高級架構圖:

f509840e-ef67-11ed-90ce-dac502259ad0.png

在網站和分片之間是黑鳥查詢服務(BQS),它協調接受用戶查詢并將請求分散到搜索集群中的每個主機。黑鳥系統使用Redis來管理配額和緩存一些訪問控制數據。

前端接受用戶查詢并將其傳遞給BQS,查詢服務將查詢解析為抽象語法樹,然后重寫它,將諸如語言之類的東西解析為其規范的Linguist 語言ID,并在額外的條款上標記權限和范圍。這樣,就可以看到重寫如何確保將從公共存儲庫或有權訪問的任何私有存儲庫中獲得結果。

f5392682-ef67-11ed-90ce-dac502259ad0.jpg

接著查詢分成n個請求,并行請求到后端分片服務:

f540d346-ef67-11ed-90ce-dac502259ad0.jpg

BQS得到分片的結果后,聚合所有分片的結果,按分數重新排序,過濾(雙重檢查權限),并返回前100列表。搜索前端仍然需要做語法高亮,term高亮、分頁,然后將渲染到頁面呈現給用戶。

來自各個分片的p99響應時間大約為100ms,但由于聚合響應、檢查權限和語法突出顯示等原因,總響應時間會稍長一些。一個查詢占用索引服務器上的單CPU內核100ms,GitHub 現有一臺64核主機大約每秒可以執行640個查詢。性能非常強硬,而且由于天然地分布式分片,所以可以很方便實現水平擴展,為同時用戶查詢和未來增長提供了充足的空間(多加分片服務器即可)。

總結

黑鳥代碼搜索系統是一個全新的基于Rust的高性能分布式代碼搜索系統。GitHub團隊基于現有業務和問題的解決基礎積極探索重新開發出適合自己獨特業務、規模和需求的系統值得每一個軟件系統架構師學習和借鑒。

當然對于廣大的碼農來說,以后在GitHub站搜代碼更方便和快捷,GitHub也對其新系統提供了豐富的文檔(docs.github /en/search-github)希望大家趕緊探索嘗試,找出一些好用的技巧來給大家分享。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68524
  • GitHub
    +關注

    關注

    3

    文章

    469

    瀏覽量

    16428
  • Rust
    +關注

    關注

    1

    文章

    228

    瀏覽量

    6601

原文標題:從Solr到Elasticsearch再到Blackbird,GitHub用Rust重寫代碼搜索引擎

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [分享]最強山寨版搜索引擎震驚世界-熊熊搜索

    日前,一款名為“熊熊搜索”(Bearsou.com)的搜索引擎引起了不少網友的關注,這個搜索引擎一眼看去和普通搜索引擎區別不大,但仔細一看,這款搜索
    發表于 11-22 18:58

    參加搜索引擎營銷SEM培訓的好處?

    1. 可以快速學習搜索引擎營銷(SEM)投放策略、方法和技術,避免在自己摸索中浪費時間;2. 可以快速學習到搜索引擎營銷(SEM)最新優化技術,在頂尖SEM優化公司指導下實實在在賺錢;3. 可以通過
    發表于 04-11 14:21

    詳解搜索引擎中的投票機制

    蘇七SEO解讀搜索引擎的投票機制
    發表于 04-11 14:03

    基于網格技術的并行搜索引擎

    研究現有網格技術和搜索技術,分析并行搜索引擎的優點和不足,提出基于網格技術的并行搜索引擎解決方案,其中包含一個3 層結構的應用框架和一個并行搜索引擎的應用方案。
    發表于 03-30 10:09 ?23次下載

    教育網BBS搜索引擎設計與實現

    BBS 是教育網的一大特色,也是傳統搜索引擎搜索的盲點,本文系統介紹了根據教育網BBS 的特點建立BBS 搜索引擎的關鍵技術和實現方法。關鍵詞:搜索
    發表于 06-17 11:28 ?14次下載

    主題搜索引擎的研究

    介紹了將開源的全文檢索工具包Lucene嵌入到自己的搜索引擎中來滿足開發主題搜索引擎的需求。并基于Lucene中文分詞的不足設計了一個比較完善的中文分詞器,然后將其引入具體應
    發表于 07-05 16:30 ?11次下載

    網絡搜索引擎,網絡搜索引擎的工作原理

    網絡搜索引擎,網絡搜索引擎的工作原理 21 世紀是信息時代,隨著信息科學技術的不斷發展,網絡已成為人們生活中的重要組成部分,網上
    發表于 03-26 15:51 ?1448次閱讀

    基于JAVA技術的搜索引擎的研究與實現

    本文還利用Java技術對搜索引擎的三個核心部分即網絡蜘蛛、網頁索引搜索進行了實現。索引搜索部分借助Lucene全文
    發表于 05-07 14:14 ?35次下載
    基于JAVA技術的<b class='flag-5'>搜索引擎</b>的研究與實現

    垂直搜索引擎是什么_垂直搜索引擎有哪些

    垂直搜索引擎是針對某一個行業的專業搜索引擎,是搜索引擎的細分和延伸,是對網頁庫中的某類專門的信息進行一次整合,定向分字段抽取出需要的數據進行處理后再以某種形式返回給用戶。垂直搜索是相對
    發表于 01-04 17:19 ?7919次閱讀

    介紹五個具有高級功能的搜索引擎

    數據庫里存儲的大量的信息對標準的搜索引擎來說是不可見的,標準的搜索引擎只是索引網站上的內容,從一個鏈接到另一個鏈接。 隱匿搜索引擎專門用來搜索
    的頭像 發表于 04-04 09:13 ?7101次閱讀

    蘋果自研的搜索引擎干的過谷歌嗎?

    據TNW報道,蘋果正在加快研發自己的搜索引擎,以取代谷歌。推出自己的搜索引擎,將有利于蘋果的產品服務的推廣,同時削弱谷歌在搜索領域的壟斷地位。
    的頭像 發表于 12-22 14:54 ?1941次閱讀

    基于蛻變測試的用戶搜索引擎性能分析

    定義相應的蛻變關系,對其檢索能力和排序穩定性進行測試,并通過異常率和平均 Jaccard系數量化測試結果。分析結果表明在搜索引擎 Baidu、Bing和360中,Bing的異常率最低, Baidu的排序穩定性最高,三者對于不同領域的關鍵詞搜索表現相差不大,但對于不同
    發表于 05-25 16:37 ?9次下載

    ChatGPT能否取代Google、百度等傳統搜索引擎

    ChatGPT并不是搜索引擎。它的目的不是提供信息搜索。相對于搜索引擎通過索引網頁并匹配搜索詞來提供信息,ChatGPT則是通過對自然
    的頭像 發表于 02-09 16:17 ?1132次閱讀

    NAS下搭建linux命令搜索引擎教程

    前面寫到了程序專用的vscode,今天再來介紹一款程序佬專用的搜索引擎——Linux命令搜索引擎。該引擎專用于搜索Linux下的各種命令,畢竟人的記憶力是有限的,當你記不住某一個命令的
    的頭像 發表于 02-24 11:33 ?1107次閱讀
    NAS下搭建linux命令<b class='flag-5'>搜索引擎</b>教程

    一個基于GPT-4的代碼搜索引擎,開源了!

    于是,一個名為 Bloop 的代碼搜索引擎應運而生,它的存在,徹底打破了以往傳統的代碼搜索方式,采用基于 GPT-4 的 AI 智能模型,成功實現用自然
    的頭像 發表于 04-27 14:25 ?1378次閱讀
    一個基于GPT-4的<b class='flag-5'>代碼</b><b class='flag-5'>搜索引擎</b>,開源了!
    主站蜘蛛池模板: 秋霞在线看片无码免费| 野花日本完整版在线观看免费高清| 国产精品亚洲精品久久品| 亚洲精品视频免费在线观看| 免费国产福利| 国产午夜婷婷精品无码A片| 99久久精品费精品国产一区二| 哇嘎在线精品视频在线观看| 伦理片qvod| 含羞草在线| 豆奶视频在线高清观看| 97caopeng| 亚洲熟女丰满多毛XXXXX| 色狠狠色狠狠综合天天| 美女胸被男子强捏视频| 国产最新进精品视频| 成人在线免费视频| 80岁色老头69av| 野花社区WWW韩国日本| 亚洲、国产综合视频| 特级做A爰片毛片免费看108| 欧美激情性AAAAA片欧美 | 99re久久热在线视频| 亚洲另类欧美综合在线| 日本乱hd高清videos| 男生插女生下体| 久久全国免费观看视频| 国产一卡2卡3卡4卡孕妇网站 | 果冻传媒2021在线观看| 高清无码色大片中文| YELLOW视频在线观看最新| 2019午夜福利757视频第12集| 亚洲性夜夜色综合网站| 亚洲精品久久久无码一区二区| 天美麻豆成人AV精品视频| 热re99久久精品国99热| 欧美视频 亚洲视频| 女警被黑人20厘米强交| 美女扣逼软件| 麻豆乱码一卡二卡三卡视频| 久久学生精品国产自在拍|