文檔(Document)
一般搜索引擎的處理對象是互聯(lián)網(wǎng)網(wǎng)頁,而文檔這個概念更要寬泛一些,代表以文本形式存在的存儲對象。相比于網(wǎng)頁來說,涵蓋更多形式,比如Word、PDF、html、XML等不同格式的文件都可以稱為文檔,再比如一封郵件、一條短信、一條微博也可以稱為文檔。
文檔集合(Document Collection)
由若干文檔構(gòu)成的集合稱為文檔集合。比如海量的互聯(lián)網(wǎng)網(wǎng)頁或者大量的電子郵件,都是文檔集合的具體例子。
文檔編號(Document ID)
在搜索引擎內(nèi)部,會為文檔集合內(nèi)每個文檔賦予一個唯一的內(nèi)部編號,以此編號作為這個文檔的唯一標(biāo)識,這樣方便內(nèi)部處理。
單詞編號(Word ID)
與文檔編號類似,搜索引擎內(nèi)部以唯一的編號來表征某個單詞,單詞編號可以作為某個單詞的唯一表征。
倒排索引(Inverted Index)
倒排索引是實現(xiàn)單詞——文檔矩陣的一種具體存儲形式。通過倒排索引,可以根據(jù)單詞快速獲取包含這個單詞的文檔列表。倒排索引主要由兩個部分組成:單詞詞典和倒排文件。
單詞詞典(Lexicon)
搜索引擎通常的索引單位是單詞,單詞詞典是由文檔集合中出現(xiàn)過的所有單詞構(gòu)成的字符串集合,單詞詞典內(nèi)每條索引項記載單詞本身的一些信息及指向倒排列表的指針。所以在用戶進(jìn)行查詢的時候,搜索引擎根據(jù)用戶的查詢詞,去單詞詞典里查詢,就能夠獲得相應(yīng)的倒排列表,并以此作為后續(xù)排序的基礎(chǔ)。
對于一個規(guī)模很大的文檔集合來說,可能包含幾十萬甚至上百萬不同的單詞,能否快速定位某個單詞,這直接影響搜索時的相應(yīng)速度,常用的數(shù)據(jù)結(jié)構(gòu)包括哈希加鏈表結(jié)構(gòu)和樹形詞典結(jié)構(gòu)。
倒排列表(PostingList)
倒排列表記載了出現(xiàn)過某個單詞的所有文檔的文檔列表及單詞在該文檔中出現(xiàn)的位置信息,每條記錄稱為一個倒排項(Posting)。根據(jù)倒排列表,即可獲知哪些文檔包含某個單詞。
倒排文件(Inverted File)
所有單詞的倒排列表往往順序地存儲在磁盤的某個文件里,這個文件即被稱為倒排文件,倒排文件是存儲倒排索引的物理文件。

建立倒排索引的步驟:
1.用分詞系統(tǒng)將文檔自動切分成單詞序列。
2.對每個不同的單詞賦予唯一的單詞編號,并記錄下哪些文檔包含這個單詞。
3.還可以記錄單詞頻率(TF),代表這個單詞在某個文檔中出現(xiàn)的次數(shù)。因為詞頻信息在搜索結(jié)果排序時,是計算查詢和文檔相似度的一個很重要的計算因子。
4.實用的倒排索引還可以額外記錄兩類信息:每個單詞對應(yīng)的文檔頻率信息(DF,文檔集合中有多少個文檔包含了這個單詞),及單詞在某個文檔中出現(xiàn)的位置信息(POS)。



參考文獻(xiàn):
[1] 張俊林. 這就是搜索引擎[M]. 電子工業(yè)出版社, 2012.