索引系統介紹:
索引系統以億為單位的網頁庫中查找特定的某些關鍵詞猶如大海裡面撈針,也許一定的時間內可以完成查找,但是用戶等不起,從用戶體驗角度我們必須在毫秒級別給予用戶滿意的結果,否則用戶只能流失。怎樣才能達到這種要求呢?
如果能知道用戶查找的關鍵詞(query切詞後)都出現在哪些頁面中,那麼用戶檢索的處理過程即可以想象為包含了query中切詞後不同部分的頁面集合求交的過程,而檢索即變成了頁面名稱之間的比較、求交。這樣,在毫秒內以億為單位的檢索成為了可能。這就是通常所說的倒排索引及求交檢索的過程。如下為建立倒排索引的基本過程:上述即是索引系統中的倒排索引過程,是搜索引擎實現毫秒級檢索非常重要的一個環節。
前面簡要介紹過了搜索引擎的索引系統,實際上在建立倒排索引的最後還需要有一個入庫寫庫的過程,而為了提高效率這個過程還需要將全部term以及偏移量保存在文件頭部,並且對數據進行壓縮,這涉及到的過於技術化在此就不多提了。今天簡要給大家介紹一下索引之後的檢索系統。
檢索系統主要包含了五個部分,如下圖所示:
(1)Query串切詞分詞即將用戶的查詢詞進行分詞,對之後的查詢做准備,以“10號線地鐵故障”為例,可能的分詞如下(同義詞問題暫時略過):
10 0x123abc
號 0x13445d
線 0x234d
地鐵 0x145cf
故障 0x354df
(2)查出含每個term的文檔集合,即找出待選集合,如下:
0x123abc 1 2 3 4 7 9…..
0x13445d 2 5 8 9 10 11……
……
……
(3)求交,上述求交,文檔2和文檔9可能是我們需要找的,整個求交過程實際上關系著整個系統的性能,這裡面包含了使用緩存等等手段進行性能優化;
(4)各種過濾,舉例可能包含過濾掉死鏈、重復數據、色情、垃圾結果以及你懂的;
(5)最終排序,將最能滿足用戶需求的結果排序在最前,可能包括的有用信息如:網站的整體評價、網頁質量、內容質量、資源質量、匹配程度、分散度、時效性等等,之後會詳細給大家介紹。