正文

搜索引擎索引——在世界上最大的草垛中尋針(4)

改變未來的九大算法 作者:(美)約翰·麥考密克


一個搜索引擎如何才能有效地進行一次短語查詢呢?繼續(xù)說“cat sat”這個例子。第一步和平常的多詞查詢 cat sat一樣,從單詞表中獲取每個單詞出現的網頁列表,在這個例子中就是出現在第1頁和第3頁的“cat”;“sat”也一樣,出現在第1頁和第3頁。不過搜索引擎到這里就卡住了。搜索引擎很確切地知道兩個單詞同時出現在頁面1和頁面3上,但沒有辦法來分辨這些單詞是否以正確的順序緊挨著彼此出現。你也許會想,搜索引擎可以返回查看原網頁,看這個短語是否存在。這的確是個可能的解決方案,但效率卻非常非常低。這需要遍歷每一個可能包含這個短語的網頁的全部內容,而且可能有海量這樣的網頁。記住,我們在這里打交道的是一個只由三個頁面組成的極小的例子,真正的搜索引擎必須從數百億個網頁中找出正確的結果。

注意英文單詞的雙引號。——譯者注

詞位置把戲

這一問題的解決方案是讓現代搜索引擎運行良好的首個、真正精巧的思想:索引應該不單單存儲頁碼,還要存儲頁面內的位置。這些位置并不神秘:它們只是代表了一個詞在頁面中的位置。第3個詞的位置是3,第29個詞的位置是29,依此類推。例子中三個頁面組成的數據集如下頁圖所示,還加上了詞位置。圖下面的是索引——由存儲頁碼和詞位置中得出的結果組成。我們稱這種創(chuàng)建索引的方法為“詞位置把戲”(word location trick)。舉幾個例子,以確保大家理解了詞位置把戲。索引的第一行是“a3-5.”。這意味著詞“a”只在數據集中出現過一次,是第3頁的第5個單詞。索引中最長的一行是“the 1-1 1-5 2-1 2-5 3-1”。這一行可以讓你知道,這個數據集中所有出現單詞“the”的具體位置。它在第1頁出現過兩次(位置1和5),第2頁出現過兩次(位置1和5),第3頁出現過1次(位置1)。

你還記得介紹頁內詞位置的目的嗎?是為了解決如何有效地進行短語查詢這個問題。讓我們來看看如何用這個新索引做一次短語查詢。還是和前面一樣,查詢短語“cat sat”。第一步和使用舊索引時一樣:從索引中提取單個詞的位置,“cat”的位置是1-2、3-2,“sat”的位置是1-3、3-7。到這里還好:我們知道短語查詢“cat sat”唯一可能的命中就是在第1頁和第3頁。但與之前一樣,我們還不確定相同的短語是否出現在了這些頁面中——有可能這兩個單詞的確出現了,但并不是以正確的順序彼此相鄰。幸運的是,從位置信息中確認這一點很容易。首先從第1頁開始。根據索引信息,我們知道“cat”出現在第1頁的位置2(這就是1-2的含義)。我們還知道“sat”出現在第1頁的位置3(這是1-3的含義)。但如果“cat”在位置2,“sat”在位置3,我們就知道“sat”緊挨著出現在“cat”之后(因為2之后立即就是3)——因此我們尋找的整個短語“cat sat”必定出現在第1頁,并從位置2開始。


上一章目錄下一章

Copyright ? 讀書網 www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號