Neil Zhu悉患,簡書ID Not_GOD畏邢,University AI 創(chuàng)始人 & Chief Scientist磺陡,致力于推進(jìn)世界人工智能化進(jìn)程。制定并實施 UAI 中長期增長戰(zhàn)略和目標(biāo)噩峦,帶領(lǐng)團(tuán)隊快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者抽兆,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團(tuán)), DL Center(深度學(xué)習(xí)知識中心全球價值網(wǎng)絡(luò))识补,AI growth(行業(yè)智庫培訓(xùn))等,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分辫红。此外凭涂,他還參與或者舉辦過各類國際性的人工智能峰會和活動,產(chǎn)生了巨大的影響力贴妻,書寫了60萬字的人工智能精品技術(shù)內(nèi)容切油,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號和媒體轉(zhuǎn)載與連載名惩。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程澎胡,均受學(xué)生和老師好評。
在查詢初始階段娩鹉,查詢被廣播到索引中每個 shard 的分片副本(主從分片)上攻谁。每個分片執(zhí)行局部的搜索,然后構(gòu)建一個匹配的優(yōu)先級隊列弯予。
優(yōu)先級隊列
優(yōu)先級隊列僅僅是一個排序的列表巢株,保存著前
n
個匹配的文檔。優(yōu)先級隊列的大小取決于分頁參數(shù)from
和size
熙涤。例如阁苞,下面的搜索請求將會獲取一個能夠容納 100 個文檔的優(yōu)先隊列:GET /_search { "from": 90, "size": 10 }```
查詢階段的流程在圖 14 中描述
查詢過程包含下面三個步驟:
- 客戶端發(fā)送一個
search
請求到Node 3
,會創(chuàng)建一個空的優(yōu)先級隊列大小為from + size
祠挫。 -
Node 3
將搜索請求轉(zhuǎn)發(fā)到索引中的每個分片的一個主(或從)副本上那槽。 - 每個分片返回 docIDs 并對在其優(yōu)先隊列中的所有排序后的 doc 給協(xié)調(diào)節(jié)點,
Node 3
等舔,這里會將這些值進(jìn)行合并放入自己的優(yōu)先級隊列中來得到最后的全局排序結(jié)果骚灸。
當(dāng)搜索請求發(fā)送到一個節(jié)點上時,這個節(jié)點變成協(xié)調(diào)節(jié)點慌植,負(fù)責(zé)將搜索請求廣播到所有涉及的分片上甚牲,并將這些反饋結(jié)果整合成全局的排序結(jié)果集返回給客戶端。
第一步是將請求廣播到每個節(jié)點的分片分本上蝶柿。就像 document GET 請求丈钙,搜索請求可以通過主分片或者任何一個從分片處理。這就是更多的從分片(結(jié)合更多的硬件)能夠提升搜索的吞吐量的原因交汤。協(xié)調(diào)節(jié)點會對搜索請求進(jìn)行 round-robin 在所有的分片副本中來分散負(fù)載壓力雏赦。
每個分片局部地執(zhí)行查詢,構(gòu)建 from+size
長度的排序優(yōu)先級隊列——換言之,在該分片上足夠多滿足全局搜索的結(jié)果星岗。這會返回結(jié)果的輕量級列表到協(xié)調(diào)節(jié)點上填大,僅僅包含 doc IDs 和任何用于排序的值,例如 _score
俏橘。
協(xié)調(diào)節(jié)點合并了這些分片層的結(jié)果到自身排序好的優(yōu)先級隊列允华,就是最后全局排序后的結(jié)果集合。查詢階段到此結(jié)束寥掐。
一個索引可以包含一個或者多個主分片靴寂,所以對一個特定索引的搜索請求需要合并來自多個分片的結(jié)果。對多個或者所有索引進(jìn)行的搜索也是按照同樣的方式進(jìn)行的——僅僅包含更多的分片曹仗。