自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GitHub改代碼搜索引擎,18小時(shí)給155億個(gè)文檔創(chuàng)建索引,背后技術(shù)原理已公開(kāi)

開(kāi)發(fā) 新聞
新版GitHub代碼搜索引擎究竟采用了什么技術(shù),做出了哪些改進(jìn)?

本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

還記得GitHub發(fā)布的新版代碼搜索引擎嗎?

圖片

經(jīng)過(guò)一番測(cè)試優(yōu)化后,GitHub現(xiàn)在公開(kāi)了背后的技術(shù)原理。

最新版搜索引擎,不僅解決了之前搜代碼時(shí)“驢唇不對(duì)馬嘴”的情況,還可以直接用正則表達(dá)式搜索;此外也解決了部分項(xiàng)目上傳后搜不到等問(wèn)題……

網(wǎng)友們看完技術(shù)原理后感到驚喜:

這真不錯(cuò)!我看到了谷歌代碼搜索引擎的影子。

其實(shí)我知道,很少有做代碼搜索引擎的人愿意去GitHub,但很高興能看到這一功能將變得更好用。

圖片

要知道,此前GitHub的代碼搜索引擎,一度被用戶吐槽“形同虛設(shè)”。

有不少用戶直接自己找了更好用的代碼搜索引擎,專門搜索想要的代碼:

圖片

在這種情況下,新版GitHub代碼搜索引擎究竟采用了什么技術(shù),做出了哪些改進(jìn)?

基于Rust語(yǔ)言的搜索引擎

GitHub新版代碼搜索引擎名叫Blackbird,它的關(guān)鍵在于重新構(gòu)建了一個(gè)索引。

這里主要實(shí)現(xiàn)兩類索引,包括正向索引(Forward index)和反向索引(Inverted index)

簡(jiǎn)單來(lái)說(shuō),正向索引指先給數(shù)據(jù)庫(kù)中的各種內(nèi)容編號(hào)(ID),然后通過(guò)這些內(nèi)容ID來(lái)搜索對(duì)應(yīng)的具體內(nèi)容:

圖片

這種搜索方法雖然比較直觀,也容易理解,但搜索量太大了。如果我們只想通過(guò)關(guān)鍵字搜索對(duì)應(yīng)內(nèi)容,就需要用到反向索引。

反向索引即通過(guò)內(nèi)容中關(guān)鍵詞,直接搜到對(duì)應(yīng)的內(nèi)容ID,從而立刻定位到對(duì)應(yīng)的內(nèi)容。

圖片

具體到反向索引實(shí)現(xiàn)方法上,GitHub采用了一種名叫ngram索引的方法,可以很方便地查找內(nèi)容的子字符串。

這種方法怎么理解?

以limits這個(gè)字符串為例,如果ngram中的n=3,那么我們就可以將它分為lim、imi、mit、its四個(gè)子字符串。

圖片

這時(shí)候搜索任意一個(gè)字符串,都能找到對(duì)應(yīng)的內(nèi)容ID,從而定位到想要搜索的內(nèi)容。

但GitHub的程序員們也意識(shí)到,這樣構(gòu)建的索引太大了,要真這樣搜索的話會(huì)導(dǎo)致服務(wù)器不夠用,因此還需要對(duì)這種方法進(jìn)行優(yōu)化。

在Hacker News中有一位GitHub程序員對(duì)此做出了解釋,即采用一種叫做覆蓋稀疏ngrams(covering sparse ngrams)的方法生成候選集,并搜索對(duì)應(yīng)內(nèi)容,其中9代表ch、6代表he、3表示es,以此類推:

圖片

以這類方法為基礎(chǔ)建立的系統(tǒng)如下:

圖片

所以,新版搜索引擎是否真的比之前更好用了?

測(cè)試版體驗(yàn)如何?

目前GitHub中有大約4500萬(wàn)個(gè)存儲(chǔ)庫(kù)、115TB代碼和155億個(gè)文檔。

據(jù)GitHub官方表示,原本在改進(jìn)之前,處理155億個(gè)文檔需要大約36個(gè)小時(shí)。

然而在重寫代碼之后,需要抓取的文檔數(shù)量降低了50%以上,因此只需要18個(gè)小時(shí)左右就可以重新給整個(gè)語(yǔ)料庫(kù)創(chuàng)建索引。

除此之外,需要搜索的內(nèi)容量也降低了不少。

原本需要搜索的內(nèi)容在115TB左右,現(xiàn)在將重復(fù)內(nèi)容和數(shù)據(jù)刪除之后,包括索引和內(nèi)容壓縮副本加起來(lái)只有25TB大小,縮減到之前的25%左右。

目前測(cè)試版依舊在開(kāi)放申請(qǐng)中,有不少GitHub用戶已經(jīng)試用了一波。

雖然有不少用戶對(duì)新搜索引擎測(cè)試版反響不錯(cuò),但也有人提出了一些建議。

例如目前這個(gè)代碼搜索引擎還沒(méi)辦法過(guò)濾fork項(xiàng)目,有時(shí)候用代碼搜索引擎,搜出來(lái)全是同一個(gè)項(xiàng)目。

圖片

對(duì)此GitHub程序員也給出了反饋,表示他們之前一直在調(diào)整索引這一塊,以后會(huì)考慮這樣的附加功能。

除此之外,也有用戶表示,GitHub新版搜索引擎依舊不好用,它從來(lái)不區(qū)分符號(hào)的定義和使用,有時(shí)候搜出來(lái)的結(jié)果,往往需要往后翻5頁(yè)左右,才能找到想要的結(jié)果。

圖片

對(duì)此,還有網(wǎng)友推薦了自己常用的代碼搜索引擎,如Sourcegraph。

圖片

你試用過(guò)GitHub的新代碼搜索引擎了嗎?或是還有什么其他好工具推薦?

新版代碼搜索引擎申請(qǐng)?jiān)囉茫?/span>https://github.com/features/code-search

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2020-08-10 14:39:30

搜索引擎

2016-12-26 13:41:19

大數(shù)據(jù)搜索引擎工作原理

2020-03-20 10:14:49

搜索引擎倒排索引

2011-06-20 18:23:06

SEO

2012-02-13 09:28:34

Wolfram AlpSiri

2011-06-28 18:26:59

SEO搜索引擎

2017-08-07 08:15:31

搜索引擎倒排

2009-05-06 14:35:17

搜索引擎PHP技術(shù)

2014-08-13 11:04:02

搜索引擎排序算法

2023-02-13 13:45:57

GitHub搜素

2014-08-05 15:10:05

Larbin搜索引擎

2009-02-19 09:41:36

搜索引擎搜狐百度

2010-04-20 11:43:46

2010-08-02 16:08:39

ibmdwJava搜索引擎

2023-05-09 17:22:08

GitHub代碼

2022-10-08 09:13:18

搜索引擎?站

2012-09-07 13:22:21

搜索搜狗

2009-09-22 16:23:52

搜索引擎

2009-09-25 11:48:11

ibmdw搜索引擎

2024-05-10 08:44:25

ChatGPT模型GPT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)