Neil Zhu簿寂,簡書ID Not_GOD漾抬,University AI 創(chuàng)始人 & Chief Scientist,致力于推進世界人工智能化進程常遂。制定并實施 UAI 中長期增長戰(zhàn)略和目標纳令,帶領(lǐng)團隊快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者克胳,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團), 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é)生和老師好評。
搜索類型
在執(zhí)行分布式搜索時存在不同的集中執(zhí)行路徑算墨。分布式搜索的操作需要被分發(fā)在所有相關(guān)的shard上宵荒,然后將所有的結(jié)果匯集返回。在進行分發(fā)和匯集的過程中,特別是通過搜索引擎中可以有好幾種方式完成骇扇。
在執(zhí)行分布式搜索時摔竿,一個問題就是從每個shard中檢索出來多少結(jié)果。例如少孝,如果我們有10個shard继低,第一個shard可能包含最相關(guān)的結(jié)果,而其他shard的結(jié)果排名都比較靠后稍走。這種情況下袁翁,在執(zhí)行請求時,我們需要從所有的shard中獲得從0到10的結(jié)果婿脸,排序粱胜,然后返回最終正確的結(jié)果。
另一問題狐树,則與搜索引擎有關(guān)焙压,就是每個shard都代表著自己。在一個特定的shard上執(zhí)行查詢時抑钟,并不會考慮項的頻率和來自其他shard的搜索引擎信息涯曲。如果我們希望支持精準的排序,我們必須首先匯集來自所有shard的項的頻率來計算全局的項頻率在塔,然后在每個shard上使用這些全局頻率信息執(zhí)行查詢幻件。
同樣,由于對結(jié)果排序的需要蛔溃,返回一個巨大的文檔集合绰沥,或者甚至進行翻頁,保存正確的排序的代價太大贺待。對于大結(jié)果集合的不排序滾動徽曲,可以通過scan
這一搜索類型完成。
elasticsearch 非常靈活狠持,支持不同的搜索類型基于per search request來執(zhí)行疟位。這個類型可以通過search_type
這個參數(shù)進行設(shè)置。存在以下的類型:
Query Then Fetch
參數(shù)值:query_then_fetch
這個請求分兩步進行喘垂。第一步,查詢轉(zhuǎn)發(fā)到所有關(guān)聯(lián)的shard上绍撞。每個shard執(zhí)行該搜索請求并產(chǎn)生一個局部的排序的結(jié)果列表正勒。每個shard返回足夠的新給負責(zé)協(xié)調(diào)的節(jié)點從而進行合并和重排shard層面的結(jié)果得到最終排序的結(jié)果集合,最大長度由參數(shù)size
確定傻铣。
在第二步章贞,協(xié)調(diào)節(jié)點僅從相關(guān)shard上請求文檔內(nèi)容(和高亮部分,如果有的話)非洲。
這是默認的設(shè)置鸭限,如果對搜索類型沒有顯式定義的話蜕径。
Dfs, Query Then Fetch
參數(shù)值:dfs_query_then_fetch
除了在初始的分發(fā)步計算分布式的項頻率更為精準外,其他與 Query Then Fetch 相同败京。
Count
參數(shù)值:count
特定的搜素類型可以返回匹配搜索請求的文檔數(shù)目兜喻,但不會包含任何的文檔在total_hits
中,也可能會包含facet赡麦。這個比count
API更加有用朴皆,可以有更多的選項可以控制行為。
Scan
參數(shù)值:scan
scan
搜索類型關(guān)閉了排序的功能泛粹,保持在大規(guī)模結(jié)果集合上的高效滾動遂铡。參見 Efficient scrolling with Scroll-Scan。
Query And Fetch
參數(shù)值:query_and_fetch
該模式是內(nèi)部優(yōu)化晶姊,當一個query_then_fetch請求單一的shard時自動選擇扒接。query_then_fetch的兩步在一個單一的步驟內(nèi)完成。這個模式不應(yīng)由用戶顯式指定们衙。
Dfs, Query And Fetch
參數(shù)值:dfs_query_and_fetch
除了對一個初始分發(fā)過程珠增,計算分布式項頻率更加準確外,該類型和query_and_fetch
相同砍艾。這個模式不應(yīng)由用戶顯式指定蒂教。