分布式搜索 - 大白話告訴你倒排索引是個啥

這個問題是近段時間被問的最多的,理清思路就更好理解了,下面貼出來漏益,也配合表格輔助理解蛹锰。

其實很多搜索引擎都是基于倒排索引,比如luncene遭庶,solr以及elasticsearch?

正排索引

聊倒排搜索之前先來看看正排索引宁仔,正排其實就是數(shù)據(jù)庫表,他通過id和數(shù)據(jù)進行關(guān)聯(lián)峦睡,如下:

[圖片上傳失敗...(image-c3ad8c-1690871925538)]

我們可以通過搜索id翎苫,來獲得相應(yīng)的數(shù)據(jù),也能刪除數(shù)據(jù)榨了。你買了一本書煎谍,書的目錄其實也是正排搜索。

假設(shè)現(xiàn)在我要搜蘋果倆字龙屉,那么他會對這張表格中每一行的數(shù)據(jù)做匹配呐粘,去查找一下,是否包含蘋果這兩個字转捕,從第一條匹配到最后一條作岖,如果一張表中數(shù)據(jù)量不多,幾萬五芝,十幾萬痘儡,那么問題不大,但是一旦數(shù)據(jù)量有上百萬枢步,上千萬沉删,那么全表掃描這種的搜索性能就會有影響缅糟。

其次毯侦,這個時候我想搜索蘋果iPhone,那么我們無法把這詞匯拆開再到數(shù)據(jù)庫去搜索酵镜。

  • 優(yōu)點:使用起來方便隘擎,原理也簡單殴穴,比較入門,典型的數(shù)據(jù)庫檢索方式
  • 缺點:檢索效率低下嵌屎,適合簡單場景使用推正,比如傳統(tǒng)項目,數(shù)據(jù)量較小的項目宝惰。不支持分詞搜索植榕。

倒排索引

與正排相比是反著來的,他會把文檔內(nèi)容進行分詞尼夺,比如“蘋果公司發(fā)布iPhone”是一個文檔數(shù)據(jù)尊残,當(dāng)我們把他存入到搜索引擎中去的時候炒瘸,會有一個文檔id,這個文檔id就類似于數(shù)據(jù)庫主鍵寝衫。但是這文檔存儲的時候和數(shù)據(jù)庫不一樣顷扩,他會進行一個分詞,參照上面的表格慰毅,分詞后的結(jié)果如下:

[圖片上傳失敗...(image-215548-1690871925538)]

每一個詞匯都會和文檔id關(guān)聯(lián)起來隘截,可以根據(jù)詞匯來找到所有出現(xiàn)的id列表,如下:

[圖片上傳失敗...(image-b3fbca-1690871925538)]

假設(shè)現(xiàn)在我要搜索iPhone汹胃,如果是數(shù)據(jù)庫搜索婶芭,假設(shè)有1億條數(shù)據(jù),那么會匹配1億次着饥,全表掃描犀农。最后再把數(shù)據(jù)返回出來。

如果是搜索引擎宰掉,那么有可能第一次就把所有文檔數(shù)據(jù)給查出來呵哨,當(dāng)然也有可能是第N次,當(dāng)然他肯定要比數(shù)據(jù)庫的搜索效率更高轨奄。如圖中位置孟害,他會直接把1001,1003兩個文檔返回挪拟。

可能會有同學(xué)會問纹坐,數(shù)據(jù)庫和搜索引擎都是1000萬數(shù)據(jù),搜索的詞匯在搜索引擎中正好是第1000萬條舞丛,那么會不會慢,其實這個肯定會比數(shù)據(jù)庫更快果漾,數(shù)據(jù)庫要匹配是一個文本中的內(nèi)容和關(guān)鍵詞匹配球切,而搜索引擎是直接把關(guān)鍵字做匹配,效率肯定后者更快绒障。

  • 優(yōu)點:搜索更快吨凑,耗時短,用戶體驗高户辱,精準(zhǔn)度也高
  • 缺點:維護成本高鸵钝,索引新建后要修改,必須先刪除庐镐,前期需要很好地規(guī)劃
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恩商,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子必逆,更是在濱河造成了極大的恐慌怠堪,老刑警劉巖揽乱,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異粟矿,居然都是意外死亡凰棉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門陌粹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撒犀,“玉大人,你說我怎么就攤上這事掏秩』蛭瑁” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵哗讥,是天一觀的道長嚷那。 經(jīng)常有香客問我,道長杆煞,這世上最難降的妖魔是什么魏宽? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮决乎,結(jié)果婚禮上队询,老公的妹妹穿的比我還像新娘。我一直安慰自己构诚,他們只是感情好蚌斩,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著范嘱,像睡著了一般送膳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丑蛤,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天叠聋,我揣著相機與錄音,去河邊找鬼受裹。 笑死碌补,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棉饶。 我是一名探鬼主播厦章,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼照藻!你這毒婦竟也來了袜啃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤幸缕,失蹤者是張志新(化名)和其女友劉穎囊骤,沒想到半個月后晃择,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡也物,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年宫屠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑蚯。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡浪蹂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出告材,到底是詐尸還是另有隱情坤次,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布斥赋,位于F島的核電站缰猴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疤剑。R本人自食惡果不足惜滑绒,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隘膘。 院中可真熱鬧疑故,春花似錦、人聲如沸弯菊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽管钳。三九已至钦铁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間才漆,已是汗流浹背育瓜。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留栽烂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓恋脚,卻偏偏與公主長得像腺办,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子糟描,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容