大白話告訴你倒排索引是個啥

2022-04-14 01:38:07 字數 1425 閱讀 6039

很多搜尋引擎都是基於倒排索引,比如luncene,solr以及elasticsearch

聊倒排搜尋之前先來看看正排索引,正排其實就是資料庫表,他通過id和資料進行關聯,如下:

資料id

資料內容

1001

蘋果公司發布iphone

1002

地球引力起源於蘋果

1003

iphone螢幕碎了

1004

我在蘋果商店維修螢幕

1005

我剛剛吃了蘋果

我們可以通過搜尋id,來獲得相應的資料,也能刪除資料。你買了一本書,書的目錄其實也是正排搜尋。

假設現在我要搜蘋果倆字,那麼他會對這張**中每一行的資料做匹配,去查詢一下,是否包含蘋果這兩個字,從第一條匹配到最後一條,如果一張表中資料量不多,幾萬,十幾萬,那麼問題不大,但是一旦資料量有上百萬,上千萬,那麼全表掃瞄這種的搜尋效能就會有影響。

其次,這個時候我想搜尋蘋果iphone,那麼我們無法把這詞彙拆開再到資料庫去搜尋。

與正排是反著來的,他會把文件內容進行分詞,比如蘋果公司發布iphone是乙個文件資料,當我們把他存入到搜尋引擎中去的時候,會有乙個文件id,這個文件id就類似於資料庫主鍵。但是這文件儲存的時候和資料庫不一樣,他會進行乙個分詞,參照上面的**,分詞後的結果如下:

文件資料

分詞結果

蘋果公司發布iphone

蘋果,公司,發布,iphone

地球引力起源於蘋果

地球,引力,起源,於,蘋果

iphone螢幕碎了

iphone,螢幕,碎了

我在蘋果商店維修螢幕

我,在,蘋果,商店,維修,螢幕

我剛剛吃了蘋果

我,剛剛,吃了,蘋果

每乙個詞彙都會和文件id關聯起來,可以根據詞彙來找到所有出現的id列表,如下:

詞彙文件ids

蘋果1001,1002,1004,1005

iphone

1001,1003

公司1001

發布1001

地球1001

引力1001

起源1001

於1001

螢幕1003,1004

碎了1003

我1004,1005

在1004

商店1004

維修1004

剛剛1005

吃了1005

假設現在我要搜尋iphone,如果是資料庫搜尋,假設有1億條資料,那麼會匹配1億次,全表掃瞄。最後再把資料返回出來。

如果是搜尋引擎,那麼有可能第一次就把所有文件資料給查出來,當然也有可能是第n次,當然他肯定要比資料庫的搜尋效率更高。如圖中位置,他會直接把1001,1003兩個文件返回。

振動測試大白話(一) 大白話解釋啥是衝擊響應譜

摘要 有的振動測試行業同行除了要測試結果,也願意交流一下計算的過程,涉及到的計算知識比較多,有的也難以理解。為了讓大家盡可能簡單地理解這些概念,今天開始就逐步分享一些大白話振動測試知識。本篇講衝擊響應譜。於網路 為了檢驗可靠性,很多產品需要做衝擊實驗。對於易於實現的實驗,可以用真實工況或簡單的實驗裝...

什麼是單頁面應用(SPA)?大白話介紹

什麼是單頁應用?單頁面應用的優缺點 優點 1 使用者操作體驗好,使用者不用重新整理頁面,整個互動過程都是通過ajax來操作。2 適合前後端分離開發,服務端提供http介面,前端請求http介面獲取資料,使用js進行客戶端渲染。缺點 1 首頁載入慢 單頁面應用會將js css打包成乙個檔案,在載入頁面...

大白話解釋什麼是集群 舉生活中最通俗易懂的案例

舉列場景 招商銀行辦理業務 2019年04月29號,招商銀行門口來了30個人辦理業務 此時,招商銀行的櫃檯只有乙個視窗,乙個銀行職員,然後該視窗裡的銀行職員就開始給這30個客戶辦理業務,2個小時過去了,該視窗的銀行職員只給5個客戶辦完了業務,還有25個客戶還在排隊焦急的等待著。乙個視窗就是單機 單個...