專利名稱:用于定位萬(wàn)維網(wǎng)頁(yè)以及計(jì)算機(jī)網(wǎng)絡(luò)文件的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明大致涉及用于訪問(wèn)萬(wàn)維網(wǎng)(WWW)上文件(稱為Web頁(yè))的系統(tǒng)和方法,以及用于定位計(jì)算機(jī)網(wǎng)絡(luò)文件的系統(tǒng)和方法,更確切地說(shuō),涉及用于快速定位和分析WWW上Web頁(yè)的系統(tǒng)和方法。
背景技術(shù):
Web文件(此處稱為Web頁(yè))被存儲(chǔ)在與國(guó)際互聯(lián)網(wǎng)(Internet)相連的為數(shù)眾多的計(jì)算機(jī)服務(wù)器(以下稱為“服務(wù)器”)上。各Web頁(yè)具有不同的URL(統(tǒng)一資源定位符)。大部分存儲(chǔ)在Web服務(wù)器上的文件是用稱為HTML(超文本標(biāo)注語(yǔ)言)的標(biāo)準(zhǔn)文件描述語(yǔ)言書寫的。采用HTML,Web文件的設(shè)計(jì)者可以將超文本鏈接或者超文本標(biāo)注與某文件中的特定單詞或詞組聯(lián)系起來(lái),以確定Web頁(yè)的可視畫面和內(nèi)容。超文本鏈接確定其他Web文件的URL,或者確定同一文件的其他部分,以提供與該單詞或該詞組有關(guān)的信息。
用戶利用Web客戶端上運(yùn)行的Web瀏覽器(用于顯示HTML文件并且與Web服務(wù)器進(jìn)行通信的計(jì)算機(jī)程序),訪問(wèn)存儲(chǔ)在WWW上的文件,其中Web客戶端與Internet相連。通常,用戶利用Web瀏覽器選擇被瀏覽文件內(nèi)的超文本連接(Web瀏覽器將其顯示為醒目的單詞或詞組)實(shí)現(xiàn)以上操作。隨后,Web瀏覽器向Web服務(wù)器(由被請(qǐng)求文件的URL標(biāo)識(shí))發(fā)出HTTP(超文本傳輸協(xié)議)請(qǐng)求,要求Web服務(wù)器發(fā)送被請(qǐng)求文件。作為應(yīng)答,指定的Web服務(wù)器也采用HTTP,向Web瀏覽器返回被請(qǐng)求的文件。
到1995年底,稱為WWW(以下稱為“Web”)的部分Internet上的Web頁(yè)的數(shù)目,在一年內(nèi)增加了好幾倍,至少達(dá)到30,000,000頁(yè)。本發(fā)明的目的在于提供一個(gè)系統(tǒng),以記錄不斷增加的Web頁(yè)。
用于定位Web頁(yè)的系統(tǒng)被分別稱為網(wǎng)絡(luò)爬蟲“Web crawler”、網(wǎng)絡(luò)蜘蛛“Web spider”和網(wǎng)絡(luò)機(jī)器人“Web robot”。本發(fā)明將其稱為網(wǎng)絡(luò)摩托車“Web scooter”,這是因?yàn)樗绕渌魏我阎木W(wǎng)絡(luò)爬蟲(Web crawler)都要快。在本文中,交替使用術(shù)語(yǔ)“Webcrawler”、“Web spider”、“Web scooter”、“Web crawler計(jì)算機(jī)系統(tǒng)”和“Web scooter計(jì)算機(jī)系統(tǒng)”。
通常,現(xiàn)有Web crawler按如下方式進(jìn)行工作。從已知Web頁(yè)的根集開(kāi)始,創(chuàng)建一個(gè)磁盤文件,其中各個(gè)已知的Web頁(yè)具有不同的表目。當(dāng)提取更多的Web頁(yè),并且分析它們與其他Web頁(yè)的鏈接時(shí),就在磁盤文件中生成更多的表目,以便引用Web crawler先前未知的Web頁(yè)。每個(gè)表目表示對(duì)應(yīng)的Web頁(yè)是否被處理過(guò)以及其他狀態(tài)信息。Webcrawler利用以下步驟處理Web頁(yè)(A)標(biāo)識(shí)該Web頁(yè)與其他正被處理的Web頁(yè)的所有鏈接,存儲(chǔ)有關(guān)信息,從而將所有未被處理的標(biāo)有標(biāo)識(shí)的Web頁(yè),添加到將要被處理的Web頁(yè)表中,或其他等價(jià)數(shù)據(jù)結(jié)構(gòu)中,和(B)將Web頁(yè)傳送到索引器或其他文件處理系統(tǒng)。
通常,將經(jīng)過(guò)處理的Web頁(yè)的有關(guān)信息,存儲(chǔ)在一磁盤文件中,這是由于該磁盤文件內(nèi)的信息量太大,以致不能存儲(chǔ)在隨機(jī)存取存儲(chǔ)器(RAM)中。例如,若為每個(gè)Web頁(yè)表目平均存儲(chǔ)100字節(jié)的信息,則表示30,000,000個(gè)Web頁(yè)的數(shù)據(jù)文件將大約占用3GB的存儲(chǔ)量,在RAM中不可能存儲(chǔ)如此大的數(shù)據(jù)文件。
下面考慮處理一頁(yè)Web頁(yè)期間發(fā)生的磁盤I/O。為了以下說(shuō)明,假設(shè)一典型的Web頁(yè)要引用20個(gè)其他Web頁(yè),并且磁盤存儲(chǔ)設(shè)備每秒不能處理50個(gè)以上的查找操作。Web crawler必須計(jì)算正被處理的Web頁(yè)內(nèi)的20個(gè)Web頁(yè)引用的每個(gè),以便確定是否知道這些Web頁(yè)。為了完成該項(xiàng)工作,Web crawler必須嘗試從Web信息磁盤文件中檢索20條記錄。若該磁盤文件內(nèi)存在特定Web頁(yè)引用記錄,則由于無(wú)需進(jìn)一步處理該引用,故拋棄該引用。然而,若未找到特定Web頁(yè)的記錄,則對(duì)每個(gè)可能的Web頁(yè)地址的別名,必須設(shè)法定位一條記錄,從而將分析平均Web頁(yè)所需的平均磁盤記錄查找數(shù),增加到每頁(yè)大約50個(gè)磁盤查找。
若特定Web頁(yè)引用的磁盤文件記錄已不再存在,就為被引用的Web頁(yè)創(chuàng)建一條記錄,將該記錄添加到磁盤文件中,并且或者將該Web頁(yè)引用增加到將要處理的Web頁(yè)隊(duì)列中,或者利用該磁盤文件表目本身指示該頁(yè)還未被提取,也未被處理。
因此,處理一個(gè)Web頁(yè)大約需要20個(gè)磁盤查找(用于讀取已有記錄和寫入新記錄)。因此,在每秒50個(gè)磁盤查找的限制下,每秒大約只能處理一個(gè)Web頁(yè)。
此外,還存在網(wǎng)絡(luò)訪問(wèn)等待時(shí)間。平均來(lái)說(shuō),檢索一個(gè)Web頁(yè)大約需要3秒,盡管該時(shí)間隨Web服務(wù)器的位置以及Web服務(wù)器和Webcrawler計(jì)算機(jī)所采用的特定硬件和軟件的變化而變化。因此,網(wǎng)絡(luò)等待時(shí)間勢(shì)必限制現(xiàn)有Web crawler技術(shù)可以處理的Web頁(yè)的數(shù)目,該數(shù)目大約為每秒0.33個(gè)Web頁(yè)。由于磁盤“查找”限制、網(wǎng)絡(luò)等待時(shí)間和其他延遲因素,典型的現(xiàn)有Web crawler技術(shù)每天可以處理的Web頁(yè)不會(huì)超過(guò)30,000頁(yè)。
由于增加到Web上的Web頁(yè)的速度,以及刪除和校正Web頁(yè)的速度,所以每天處理30,000個(gè)Web頁(yè),并不足以維護(hù)Web上所有Web頁(yè)的真正現(xiàn)有目錄或索引。理論上,一Web crawler每天至少應(yīng)該能夠訪問(wèn)(即,提取和分析)2,500,000個(gè)Web頁(yè)。
因此,需要具有如此高速容量的Web crawler。本發(fā)明的目的在于提供一種改進(jìn)的Web crawler,該Web crawler每天能夠處理數(shù)百萬(wàn)的Web頁(yè)。本發(fā)明的另一有關(guān)目標(biāo)是提供一種改進(jìn)的Web crawler,該Web crawler能夠克服上述的磁盤“查找”限制和網(wǎng)絡(luò)等待時(shí)間限制,從而使得Web crawler的操作速度,主要受Web crawler的CPU的處理速度的限制。本發(fā)明的又一有關(guān)目標(biāo)是提供一種Web crawler系統(tǒng),平均而言,該系統(tǒng)每秒能夠至少提取和分析30個(gè)Web頁(yè),最好每秒能夠提取和分析100個(gè)以上的Web頁(yè)。
發(fā)明內(nèi)容
在廣義上,本發(fā)明在于如權(quán)利要求1所述的用于定位Web頁(yè)的系統(tǒng),和如權(quán)利要求6所述的用于定位Web頁(yè)的方法。
以下說(shuō)明用于快速定位并生成WWW上Web頁(yè)目錄的系統(tǒng)和方法。Web crawler系統(tǒng)包括一散列表和一順序文件(此處稱為“順序磁盤文件”或“Web信息磁盤文件”),其中散列表被存儲(chǔ)在隨機(jī)存取存儲(chǔ)器(RAM)上,而順序文件被存儲(chǔ)在輔助存儲(chǔ)器(通常為磁盤存儲(chǔ)器)上。對(duì)系統(tǒng)所知的每個(gè)Web頁(yè),Web crawler系統(tǒng)在順序磁盤文件中存儲(chǔ)一個(gè)表目,并在散列表中存儲(chǔ)一個(gè)較小的表目。散列表表目包括一個(gè)指紋值、一個(gè)提取標(biāo)志和一個(gè)文件定位指示項(xiàng),其中僅當(dāng)成功提取到相應(yīng)的Web頁(yè)時(shí),才將提取標(biāo)志設(shè)置為真,文件定位指示項(xiàng)指示相應(yīng)表目在順序磁盤文件內(nèi)的存儲(chǔ)位置。每個(gè)順序磁盤文件表目包括相應(yīng)Web頁(yè)的URL和有關(guān)該Web頁(yè)的提取狀態(tài)信息。
對(duì)Web信息磁盤文件的所有訪問(wèn),是通過(guò)輸入緩沖區(qū)順序進(jìn)行的,從而以單一I/O操作的形式,將順序磁盤文件內(nèi)的眾多表目移到輸入緩沖區(qū)。隨后,從輸入緩沖區(qū)訪問(wèn)該順序磁盤文件。同樣,把將要添加到順序文件的所有新表目,存儲(chǔ)到附加緩沖區(qū)內(nèi),并且當(dāng)添滿附加緩沖區(qū)時(shí),就將附加緩沖區(qū)的內(nèi)容添加到順序磁盤文件的尾部。這樣,就消除了對(duì)Web信息磁盤文件的隨機(jī)存取,并且把磁盤訪問(wèn)限制引起的等待時(shí)間降到最低限度。
用于定位和處理Web頁(yè)的過(guò)程包括順序檢查順序文件內(nèi)的所有表目,選擇滿足既定選擇準(zhǔn)則的下一表目。當(dāng)選擇下一表目處理時(shí),就在散列表內(nèi)檢查當(dāng)前表目候選項(xiàng)的所有的已知?jiǎng)e名,以便確定是否用別名提取了該Web頁(yè)。如果已經(jīng)以別名提取了該Web頁(yè),就將順序文件表目的錯(cuò)誤類型域標(biāo)識(shí)為“未選別名”,同時(shí)不再選擇該候選表目。
一旦選擇了下一個(gè)Web頁(yè)引用表目,Web crawler系統(tǒng)試圖提取相應(yīng)的Web頁(yè)。如果提取不成功,就根據(jù)返回到Web crawler的錯(cuò)誤返回碼,將該Web頁(yè)順序文件表目?jī)?nèi)的提取狀態(tài)信息標(biāo)識(shí)為提取失敗。如果提取成功,就依照該Web頁(yè)的順序磁盤文件表目(在輸入緩沖區(qū)內(nèi))內(nèi)的類似標(biāo)志,設(shè)置該Web頁(yè)散列表表目?jī)?nèi)的提取標(biāo)志。此外,分析所提取的Web頁(yè)內(nèi)的每個(gè)URL鏈接。如果散列表中存在被該鏈接引用的URL的表目,或者存在該URL的任何定義別名的表目,則無(wú)需進(jìn)一步處理該URL鏈接。如果不能在散列表中找到以上表目,則該URL代表一“新的”Web頁(yè),在此之前,該Web頁(yè)并不包括在所有Web頁(yè)的Web crawler數(shù)據(jù)庫(kù)中,因此,需將新Web頁(yè)表目添加到順序磁盤文件中(即將其添加到附加緩沖區(qū)內(nèi)的磁盤文件部分)。新磁盤文件表目包括由正在處理的鏈接引用的URL,并且將其標(biāo)識(shí)為“未提取”。此外,將相應(yīng)的新表目添加到散列表中,清除該表目的提取標(biāo)志,以表示還未提取相應(yīng)的Web頁(yè)。除處理提取頁(yè)內(nèi)的所有URL鏈接外,Webcrawler還要將已提取的Web頁(yè)發(fā)送到索引器,以便進(jìn)一步處理。
根據(jù)以下最佳實(shí)施方式(用示例說(shuō)明)的說(shuō)明,連同附圖一并考慮,將更詳細(xì)地理解本發(fā)明,其中附圖是圖1是根據(jù)本發(fā)明最佳實(shí)施方式的Web crawler系統(tǒng)的最佳實(shí)施方式的框圖。
圖2是本發(fā)明最佳實(shí)施方式采用的散列表結(jié)構(gòu)的框圖。
圖3是本發(fā)明最佳實(shí)施方式采用的順序Web信息磁盤文件以及有關(guān)數(shù)據(jù)結(jié)構(gòu)的框圖。
圖4是本發(fā)明最佳實(shí)施方式采用的Web crawler過(guò)程的流程圖。
具體實(shí)施例方式
參照?qǐng)D1,圖1表示分布式計(jì)算機(jī)系統(tǒng)100,該系統(tǒng)具有Webscooter計(jì)算機(jī)系統(tǒng)102。利用通信接104以及一組Internet和其他網(wǎng)絡(luò)連接106,將Web scooter連接到Internet和Web頁(yè)索引計(jì)算機(jī)108。在某些實(shí)施方式中,利用專用通信信道,而不采用局域網(wǎng)或廣域網(wǎng)連接,直接將Web頁(yè)索引計(jì)算機(jī)108連接到Web scooter102。與Web scooter102相連的Internet部分為(A)存儲(chǔ)Web頁(yè)的Web服務(wù)器110,和(B)配合統(tǒng)稱為分布式域名服務(wù)(DNS)服務(wù)的服務(wù)器,這里一并用參數(shù)112表示。為了本文的目的,假設(shè)DNS 112為全部請(qǐng)求提供任何Internet主機(jī)名的所有定義別名集,并且Internet主機(jī)名以及其別名構(gòu)成每個(gè)URL的前綴部分。
在最佳實(shí)施方式中,Web scooter102為DEC公司生產(chǎn)的Alpha工作站計(jì)算機(jī);然而事實(shí)上,可以采用任何類型的計(jì)算機(jī)作為Web scooter計(jì)算機(jī)。在最佳實(shí)施方式中,Web scooter102包括一個(gè)CPU 114,上述通信接口104,用戶接116,隨機(jī)存取存儲(chǔ)器(RAM)118和磁盤存儲(chǔ)器(磁盤)120。在最佳實(shí)施方式中,通信接104是一高容量的通信接口,該通信接口能夠以每秒30個(gè)以上Web頁(yè)的平均提取吞吐量,處理1000個(gè)以上的重疊通信請(qǐng)求。
在最佳實(shí)施方式中,Web scooter的RAM為1GB,并存儲(chǔ)·一個(gè)多任務(wù)操作系統(tǒng)122;
·一個(gè)Internet通信管理程序124,該程序用于從DNS 112提取Web頁(yè)和別名信息;·一個(gè)主機(jī)名表126,該表存儲(chǔ)表示主機(jī)名定義別名的信息;·一個(gè)Web信息散列表130;·一個(gè)散列表管理過(guò)程132;·一個(gè)輸入緩沖區(qū)134和一個(gè)附加緩沖區(qū)136;·一個(gè)互斥體(mutex)138,該互斥體用于控制對(duì)散列表130、輸入緩沖區(qū)134和附加緩沖區(qū)136的訪問(wèn);·一個(gè)Web scooter過(guò)程140;和·線程數(shù)據(jù)結(jié)構(gòu)142,該數(shù)據(jù)結(jié)構(gòu)用于定義T1個(gè)執(zhí)行線程,其中T1是一個(gè)整數(shù),該整數(shù)是由Web scooter計(jì)算機(jī)系統(tǒng)102的操作員選擇的(例如,在最佳實(shí)施方式中,將T1設(shè)置為值1000)。
正如下面的詳細(xì)說(shuō)明,磁盤存儲(chǔ)器120存儲(chǔ)Web信息磁盤文件150,利用輸入緩沖區(qū)134和附加緩沖區(qū)136,順序訪問(wèn)磁盤文件150。
在主機(jī)名表126中還存儲(chǔ)有為DNS 112所知的、各主機(jī)名的所有別名信息。事實(shí)上,別名為一組URL前綴,Web scooter過(guò)程140利用該別名取代特定Web頁(yè)的URL的主機(jī)名部分,形成特定Web頁(yè)的一組別名URL。
以下將參照?qǐng)D1到圖4以及表1和表2,說(shuō)明上述數(shù)據(jù)結(jié)構(gòu)以及過(guò)程的作用和操作。表1和表2同時(shí)含有Web scooter過(guò)程的偽碼。盡管這里使用的偽碼主要是為本說(shuō)明書的目的而發(fā)明的,它仍采用通用計(jì)算機(jī)語(yǔ)言約定,其目的是使所有計(jì)算機(jī)程序員都能夠輕而易舉地理解該過(guò)程。
Web信息散列表參照?qǐng)D2,Web信息散列表130包括各Web頁(yè)(該Web頁(yè)已被Webscooter系統(tǒng)提取和分析)的不同表目160,和該Web頁(yè)(該Web頁(yè)已被提取和分析)內(nèi)URL鏈接所引用的各Web頁(yè)。每個(gè)表目包括·一個(gè)指紋值162,對(duì)應(yīng)的Web具有唯一的指紋值;·一個(gè)1位的“提取標(biāo)志”164,該提取標(biāo)志表示W(wǎng)eb scooter是否已提取并分析了相應(yīng)的Web頁(yè);和
·一個(gè)文件定位值166,該值表示對(duì)應(yīng)表目在Web信息磁盤文件150中的位置。
在最佳實(shí)施方式中,每個(gè)指紋值的長(zhǎng)度為63位,每個(gè)文件定位值的長(zhǎng)度為32位。因此,在最佳實(shí)施方式中,每個(gè)散列表表目160恰好占用12字節(jié)。盡管散列表表目的準(zhǔn)確尺寸并不重要,重要的是各散列表表目160遠(yuǎn)遠(yuǎn)小于(例如,至少平均小75%)相應(yīng)的磁盤文件表目。散列表管理程序132經(jīng)過(guò)其“接口”170,接收Web scooter過(guò)程140的兩類過(guò)程調(diào)用·第一請(qǐng)求,詢問(wèn)散列表管理程序132是否存在特定URL表目,若存在,則詢問(wèn)該記錄的提取標(biāo)志是否表示相應(yīng)的Web頁(yè)已被提取和分析;和·第二請(qǐng)求,要求散列表管理程序在散列表130內(nèi),存儲(chǔ)特定URL和特定磁盤位置的新表目。
散列表管理程序132利用指紋散列函數(shù)172,計(jì)算提供給該程序的各URL的63-位的指紋值。指紋函數(shù)172的目的是確保將不同的URL映射為同樣不同的指紋值。指紋函數(shù)生成任何特定Web頁(yè)URL的壓縮編碼。一般技術(shù)人員了解相稱的指紋函數(shù)的設(shè)計(jì)。應(yīng)注意,雖然大約有225到226個(gè)Web頁(yè),指紋卻可以有263個(gè)不同值。
當(dāng)Web scooter過(guò)程140詢問(wèn)散列表管理程序132是否存在特定URL表目時(shí),散列表管理程序(A)利用上述指紋散列函數(shù)172生成特定URL的指紋,(B)將該值傳送到散列表位置函數(shù)174,該函數(shù)確定在散列表130內(nèi)什么位置存儲(chǔ)具有該指紋值的表目,(C)確定散列表內(nèi)是否真正存儲(chǔ)有該表目,(D)若未發(fā)現(xiàn)匹配表目,則返回一個(gè)失敗值(如-1),和(E)若在散列表內(nèi)找到該表目,則返回成功值(如0)、該表目的提取標(biāo)志值和磁盤位置值。
在最佳實(shí)施方式中,散列表位置函數(shù)174根據(jù)指紋值的預(yù)定數(shù)目的低位,確定散列表表目的位置,隨后排列到具有相同低位的所有指紋表目塊組成的鏈中。對(duì)于給定的低位值,以塊為單位(每塊B1個(gè)表目),在散列表130內(nèi)分配表目160,其中可以調(diào)整參數(shù)B1。最佳實(shí)施方式中采用的上述分配模式具有以下優(yōu)點(diǎn)能夠以很高的密度方式,在散列表130內(nèi)存儲(chǔ)數(shù)據(jù)。正如熟練的技術(shù)人員可以了解的那樣,可以采用許多其他散列表位置函數(shù)。
當(dāng)Web scooter過(guò)程140要求散列表管理程序132為特定URL和特定磁盤文件位置存儲(chǔ)新的散列表表目時(shí),散列表管理程序(A)采用上述指紋散列函數(shù)172,生成特定URL的指紋,(B)將該值傳送到散列表位置函數(shù)174,該函數(shù)確定在散列表130內(nèi)什么位置存儲(chǔ)具有該指紋值的表目,和(C)在散列表內(nèi)的確定位置存儲(chǔ)新表目160,其提取標(biāo)志值表示還未提取相應(yīng)的Web頁(yè),同時(shí),新表目160包含有指紋值和特定的磁盤文件位置。
Web信息磁盤文件和緩沖區(qū)參照?qǐng)D3和表2,利用輸入緩沖區(qū)134和附加緩沖區(qū)136(二者都位于RAM內(nèi)),最大限度地降低了磁盤操作。利用后臺(tái)順序磁盤文件和緩沖區(qū)處理過(guò)程(統(tǒng)稱為磁盤文件管理程序),管理輸入緩沖區(qū)和附加緩沖區(qū)。
在最佳實(shí)施方式中,輸入緩沖區(qū)和附加緩沖區(qū)分別為50MB和100MB。輸入緩沖區(qū)134用于存儲(chǔ)Web信息磁盤文件150的順序排列的連續(xù)部分。Web scooter過(guò)程含有指針176、指針178以及若干內(nèi)務(wù)操作指針,其中指針176指向輸入緩沖區(qū)內(nèi)將要處理的下一表目,指針178指向Web信息磁盤文件150內(nèi)將要傳送到輸入緩沖區(qū)134的下一表目180,內(nèi)務(wù)指針為協(xié)調(diào)使用輸入緩沖區(qū)134、附加緩沖區(qū)136和磁盤文件150所需要的指針。
經(jīng)過(guò)輸入緩沖區(qū)134,順序?qū)崿F(xiàn)對(duì)Web信息磁盤文件150的所有訪問(wèn),從而以單個(gè)I/O操作,將順序磁盤文件內(nèi)的眾多表目移到輸入緩沖區(qū)。隨后,從輸入緩沖區(qū)訪問(wèn)該順序磁盤文件150。同樣,把將要添加到順序文件的所有新表目,存儲(chǔ)到附加緩沖區(qū)136內(nèi),并且當(dāng)添滿附加緩沖區(qū)后,就將附加緩沖區(qū)的內(nèi)容添加到順序磁盤文件的尾部。這樣,就消除了對(duì)Web信息磁盤文件的隨機(jī)存取,并且把磁盤訪問(wèn)限制引起的等待時(shí)間降到最低限度。
每當(dāng)Web scooter掃描了輸入緩沖區(qū)134內(nèi)的所有表目后,就將輸入緩沖區(qū)內(nèi)的所有表目更新,回存到Web信息磁盤文件150內(nèi),同時(shí),將附加緩沖區(qū)內(nèi)的所有表目,添加到磁盤文件150的尾部。此外,清空附加緩沖區(qū)136,并將磁盤文件內(nèi)的下一組表目(緊接上一組拷貝到輸入緩沖區(qū)134內(nèi)的表目——如指針178所示),拷貝到輸入緩沖區(qū)134。當(dāng)Web scooter過(guò)程掃描完磁盤文件內(nèi)的最后一組表目后,就在磁盤文件150的起始處開(kāi)始重新掃描。
當(dāng)用新表目添滿附加緩沖區(qū)136之后,就將其內(nèi)容添加到磁盤文件150的尾部,同時(shí)清空附加緩沖區(qū),以便接收新表目。
Web信息磁盤文件150內(nèi)的各個(gè)表目180存儲(chǔ)有·一變長(zhǎng)URL字段182,該字段存儲(chǔ)該表目所引用的Web頁(yè)的URL;·一提取標(biāo)志184,該標(biāo)志表示W(wǎng)eb scooter是否提取并分析了相應(yīng)的Web頁(yè);·一時(shí)戳186,該時(shí)戳表示提取、分析和索引被引用Web頁(yè)的日期和時(shí)間;·一度量值188,該值表示W(wǎng)eb頁(yè)的大小;·一錯(cuò)誤類型值190,該值表示碰到的錯(cuò)誤類型,若有錯(cuò)誤發(fā)生,則該值表示試圖提取被引用Web頁(yè)的最后時(shí)間,如果該表目代表一副本(即別名URL),則應(yīng)忽略該值;和·與此無(wú)關(guān)的其他提取狀態(tài)信息192。
由于URL字段182是變長(zhǎng)的,所以Web信息磁盤文件150內(nèi)的記錄180也是變長(zhǎng)的。
Web scooter過(guò)程現(xiàn)在參照?qǐng)D1至圖4以及表1內(nèi)的偽碼,最佳實(shí)施方式中的Webscooter過(guò)程140按如下方式進(jìn)行工作。當(dāng)Web scooter過(guò)程開(kāi)始執(zhí)行時(shí),它利用以下步驟初始化(步驟200)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)·掃描預(yù)先存在的Web信息磁盤文件150,利用順序磁盤文件內(nèi)的所有表目,初始化散列表130;·將磁盤文件150內(nèi)的第一批順序磁盤表目拷貝到輸入緩沖區(qū)134;·定義一個(gè)空的附加緩沖區(qū)136,該緩沖區(qū)用于存儲(chǔ)新的順序文件表目;和·定義一個(gè)互斥138,該互斥用于控制對(duì)輸入緩沖區(qū)134、附加緩沖區(qū)136和散列表130的訪問(wèn)。
隨后,Web scooter初始化程序啟動(dòng)T1個(gè)線程(例如,在最佳實(shí)施方式中,啟動(dòng)1000個(gè)線程),各線程執(zhí)行相同的Web scooter過(guò)程。
在Web scooter初始化過(guò)程執(zhí)行之前,將預(yù)先存在的Web信息磁盤文件150內(nèi)的表目集,統(tǒng)稱為已知Web頁(yè)的“根集”144?!翱稍L問(wèn)”Web頁(yè)集包括根集內(nèi)URL鏈接引用的所有Web頁(yè),和其他可訪問(wèn)Web頁(yè)內(nèi)URL鏈接引用的所有Web頁(yè)。因此,由于根集與“不可訪問(wèn)”的Web頁(yè)之間不存在URL鏈接,所以Web scooter102可能不能訪問(wèn)某些Web頁(yè)。
當(dāng)利用各種信道獲得以上Web頁(yè)的有關(guān)信息時(shí),通過(guò)“手工”插入附加表目,或者利用其他機(jī)制來(lái)包括附加表目,就可以擴(kuò)充Web信息磁盤文件150(從而擴(kuò)展了根集144),這樣,就可以訪問(wèn)以前不能訪問(wèn)的Web頁(yè)。
以下是Web scooter過(guò)程的說(shuō)明,所有同時(shí)運(yùn)行的線程均執(zhí)行該過(guò)程。過(guò)程的第一步請(qǐng)求并等待互斥體(步驟202)。請(qǐng)求互斥的所有權(quán),從而不會(huì)出現(xiàn)兩個(gè)線程處理同一磁盤文件表目,從而也不會(huì)出現(xiàn)兩個(gè)線程試圖同時(shí)往散列表、輸入緩沖區(qū)、附加緩沖區(qū)和磁盤文件中寫信息。這里一并將散列表130、輸入緩沖區(qū)134、附加緩沖區(qū)136和磁盤文件150稱為“受護(hù)數(shù)據(jù)結(jié)構(gòu)”,這是由于利用互斥,共同保護(hù)這些數(shù)據(jù)結(jié)構(gòu)。一旦某線程擁有了互斥,該線程就可以從未被掃描的下一表目開(kāi)始(如指針176所示),掃描輸入緩沖區(qū)內(nèi)的磁盤文件表目,直至該線程定位并選擇了滿足既定選擇準(zhǔn)則的表目(步驟204)。
例如,默認(rèn)選擇準(zhǔn)則為引用從未被提取過(guò)(由其表目表示)的Web頁(yè)的任意表目,或者其最后提取和分析時(shí)間為H1小時(shí)以前的表目,其中H1是一個(gè)可由操作員選擇的值,但不包括其錯(cuò)誤類型字段表示該表目為一副本表目(即下面所述的“未選擇別名”)的表目。如果將H1設(shè)置為168,則引用其最后提取和分析時(shí)間為一星期以前的表目滿足選擇準(zhǔn)則。另一選擇準(zhǔn)則(其中考慮了Web頁(yè)的大小)為表示其Web頁(yè)從未被提取過(guò)的表目,或者其Web頁(yè)的大小大于S1、并且最后提取和分析時(shí)間為H1小時(shí)以前的表目,或者其Web頁(yè)的大小不超過(guò)S1、并且最后提取和分析時(shí)間為H2小時(shí)以前的表目,但不包括其錯(cuò)誤類型字段表示該表目為一“未選擇別名”的表目,其中S1、H1和H2為操作員可選擇的值。
當(dāng)選擇下一表目處理時(shí),在散列表內(nèi)檢查當(dāng)前候選表目的所有已知?jiǎng)e名,確定是否以別名提取了該Web頁(yè)。具體而言,若某一表目滿足既定選擇準(zhǔn)則,就采用主機(jī)名表126內(nèi)的信息,生成該表目的所有已知?jiǎng)e名的URL,隨后,檢查散列表130,以便查看是否存儲(chǔ)有任一別名URL表目,其中該表目的提取標(biāo)志表示已經(jīng)以別名提取了被引用的Web頁(yè)。如果能夠確定以別名URL提取了輸入緩沖區(qū)內(nèi)當(dāng)前候選·表目引用的Web頁(yè),就更改輸入緩沖區(qū)內(nèi)該表目的錯(cuò)誤類型字段190,以表示該表目為一“未選擇別名”表目,從而避免了選擇該表目以備此時(shí)或?qū)?lái)進(jìn)行處理。
一旦選定了Web頁(yè)引用表目,就釋放互斥體,從而其他線程可以訪問(wèn)受擴(kuò)數(shù)據(jù)結(jié)構(gòu)(步驟206)。然后。Web scooter過(guò)程設(shè)法提取相應(yīng)的Web頁(yè)(步驟208)。在提取完成或提取失敗后,該過(guò)程再次請(qǐng)求并等待互斥體(步驟210),從而該過(guò)程能夠再次使用受護(hù)數(shù)據(jù)結(jié)構(gòu)。
如果提取失敗(步驟212-N),就根據(jù)返回到Web crawler的錯(cuò)誤返回碼,將該Web頁(yè)順序文件表目?jī)?nèi)的提取狀態(tài)信息,標(biāo)識(shí)為提取失敗(步驟214)。如果提取成功(步驟212-Y),就依照該Web頁(yè)順序磁盤文件表目180(在輸入緩沖區(qū)內(nèi))內(nèi)的提取標(biāo)志184,設(shè)置該Web頁(yè)散列表表目160內(nèi)的提取標(biāo)志。此外,還要分析已提取的Web頁(yè)內(nèi)的各URL鏈接(步驟216)。
在對(duì)已提取的Web頁(yè)進(jìn)行了分析之后,或者在輸入緩沖區(qū)表目?jī)?nèi)記錄了提取失敗之后,就釋放互斥,從而其他線程可以訪問(wèn)受護(hù)數(shù)據(jù)結(jié)構(gòu)(步驟218)。
以下參照?qǐng)D4B,說(shuō)明用于分析已提取的Web頁(yè)的URL鏈接的過(guò)程。注意到,一個(gè)Web頁(yè)可能含有以下URL鏈接,該URL鏈接到的文件(如圖象文件)并不含有適于索引系統(tǒng)108進(jìn)行索引的信息。通常把這些被引用文件用作引用該文件的Web頁(yè)的成員。為了本文的目的,假設(shè)鏈接到成員文件(如圖象文件和不可索引文件)的URL鏈接,不是“鏈接到其他Web頁(yè)的URL鏈接”。Web scooter過(guò)程忽略鏈接到不可索引文件的URL鏈接。
一旦處理了鏈接到其他Web頁(yè)的所有URL連接(步驟230),就將已提取的Web頁(yè)發(fā)送到索引器進(jìn)行索引(步驟232),Web scooter完成對(duì)已提取的Web頁(yè)的處理。否則,選擇鏈接到Web頁(yè)的下一個(gè)URL鏈接(步驟234)。如果已經(jīng)存在與所選鏈接有關(guān)的URL的散列表表目(步驟236),則無(wú)需進(jìn)一步處理該鏈接,如果被分析的Web頁(yè)內(nèi)還有其他未處理的URL鏈接,則選擇下一個(gè)URL鏈接(步驟234)。
如果不存在與所選鏈接有關(guān)的URL的散列表表目(步驟236),則利用主機(jī)名表126內(nèi)的信息,生成該表目的所有已知?jiǎng)e名的URL,然后檢查散列表130,以便查看該表內(nèi)是否存儲(chǔ)有任何別名URL表目(步驟238)。如果散列表內(nèi)存在任一別名URL表目,則無(wú)需進(jìn)一步處理該鏈接,如果被分析的Web頁(yè)內(nèi)還有其他未處理的URL鏈接,則選擇下一個(gè)URL鏈接(步驟234)。
如果散列表內(nèi)不存在所選鏈接的URL表目或任一別名的表目,則該URL表示一個(gè)“新的”Web頁(yè),此前,所有Web頁(yè)的Web crawler數(shù)據(jù)庫(kù)中不包括該Web頁(yè),因此,將該新Web頁(yè)表目添加到附加緩沖區(qū)內(nèi)的磁盤文件中(步驟240)。新的磁盤文件表目包括被處理鏈接所引用的URL,并將該磁盤文件表目標(biāo)記為“未提取”。此外,將相應(yīng)新表目添加到散列表中,同時(shí)清除該表目的提取標(biāo)志,以便表示還未提取相應(yīng)的Web頁(yè)(步驟240)。然后,如果該Web頁(yè)內(nèi)還有其他未處理的URL鏈接,則選擇該Web頁(yè)內(nèi)下一個(gè)未處理的URL鏈接,繼續(xù)進(jìn)行Web頁(yè)處理(步驟234)。
由于散列表130包含有各已知Web頁(yè)的磁盤文件位置值,所以Web過(guò)程(其目的和操作在本文范圍之外)將Web信息散列表130,用作Web信息磁盤文件150的索引。換句話說(shuō),通過(guò)首先讀取Web信息散列表內(nèi)的相應(yīng)表目中的磁盤文件地址,然后讀取位于該地址的Web信息磁盤文件表目,訪問(wèn)Web信息磁盤文件中的表目。
其他實(shí)施方式可以采用具有同樣性質(zhì)的Web信息散列表130的其他數(shù)據(jù)結(jié)構(gòu)(如平衡樹(shù)、跳躍表等等),取代最佳實(shí)施方式中的散列表結(jié)構(gòu)130。
作為一種解決方案,本發(fā)明采用三種主要機(jī)制,克服現(xiàn)有技術(shù)Webcrawler的速度限制。
第一,在RAM中存儲(chǔ)具有足夠信息的Web頁(yè)目錄表,以便確定Webcrawler未曾知道的、表示新Web頁(yè)的Web頁(yè)鏈接,這樣,無(wú)需訪問(wèn)磁盤文件,就可以分析接收到的Web頁(yè)。
第二,僅以順序次序訪問(wèn)更完備的Web頁(yè)目錄,并且利用大容量輸入緩沖區(qū)和附加緩沖區(qū)實(shí)現(xiàn)以上訪問(wèn),該緩沖區(qū)能將磁盤訪問(wèn)量減小到磁盤訪問(wèn)對(duì)Web crawler的速度性能沒(méi)有明顯影響的程度。
第三,通過(guò)利用大量并行活動(dòng)線程執(zhí)行Web scooter過(guò)程,并且通過(guò)提供能夠處理相同數(shù)量的并行通信信道(該信道與Web服務(wù)器相連)的通信接口,本發(fā)明避免了由網(wǎng)絡(luò)訪問(wèn)等待時(shí)間引起的延遲。
具體而言,當(dāng)大量線程等待Web頁(yè)提取請(qǐng)求的應(yīng)答時(shí),其他線程正在分析接收到的Web頁(yè)。通過(guò)利用大量線程執(zhí)行同一Web scooter過(guò)程,平均而言,往往會(huì)出現(xiàn)一個(gè)具有接收Web頁(yè)的線程隊(duì)列,該線程隊(duì)列正在等待互斥,以便處理已經(jīng)接收的Web頁(yè)。同時(shí),Web頁(yè)的提取往往是交錯(cuò)進(jìn)行的。因此,Web scooter幾乎不會(huì)出現(xiàn)以下?tīng)顟B(tài),即除等待接收Web頁(yè)外,無(wú)其他事情可作。通過(guò)采用多處理器工作站,同時(shí)增加并行執(zhí)行Web scooter過(guò)程的線程數(shù)量,可以進(jìn)一步提高Webscooter的吞吐量。
盡管參照幾個(gè)特定實(shí)施方式說(shuō)明了本發(fā)明,該說(shuō)明書只是本發(fā)明的示例,不應(yīng)把該說(shuō)明書看作是對(duì)本發(fā)明的限制。正如本文所提交并申明的那樣,可以不背離本發(fā)明的范圍,作出各種改進(jìn)。
表1Web scooter過(guò)程的偽碼表示過(guò)程Web scooter{/*初始化步驟*/掃描預(yù)先存在的Web信息磁盤文件,利用順序文件內(nèi)的所有表目初始化散列表將第一批順序磁盤表目讀入RAM內(nèi)的輸入緩沖區(qū)中定義用于新的順序文件表目的、空的附加緩沖區(qū)定義互斥體,該互斥體用于控制對(duì)輸入緩沖區(qū)、附加緩沖區(qū)和散列表的訪問(wèn)啟動(dòng)1000個(gè)線程,分別執(zhí)行同一scooter過(guò)程}過(guò)程scooter{永遠(yuǎn)重復(fù)執(zhí)行{請(qǐng)求并等待互斥體根據(jù)既定URL選擇準(zhǔn)則,讀取順序文件(該文件在輸入緩沖區(qū)內(nèi))直至選擇了一個(gè)需要處理的新的URL。當(dāng)選擇下一URL進(jìn)行處理時(shí),檢查散列表內(nèi)該URL的所有已知?jiǎng)e名,以便確定是否以別名形式提取了該Web頁(yè),如果以別名形式提取了該Web頁(yè),則將該順序文件表目的錯(cuò)誤類型字段標(biāo)識(shí)為“未選擇別名”。
/*選擇準(zhǔn)則示例從未被提取過(guò)的URL,或者其最后提取時(shí)間為H1小時(shí)以前的URL并且該URL并非一未選擇別名*/釋放互斥體提取所選Web頁(yè)請(qǐng)求并等待互斥體如果提取成功{將散列表表內(nèi)的表目以及輸入緩沖區(qū)內(nèi)的順序文件表目標(biāo)識(shí)為已提取/*分析已提取的Web頁(yè)*/對(duì)該頁(yè)內(nèi)的每個(gè)URL鏈接{如果散列表內(nèi)存儲(chǔ)有該URL或任一定義別名{什么也不做}否則{/*該URL表示一“新的”Web頁(yè),現(xiàn)有數(shù)據(jù)庫(kù)中不包括該Web頁(yè)*/將相應(yīng)Web頁(yè)的新表目添加到附加緩沖區(qū)中,將該表目標(biāo)識(shí)為“未提取”將表目添加到散列表中,將該表目標(biāo)記為“未提取”}}將已提取的Web頁(yè)發(fā)送到索引器進(jìn)行索引}否則{根據(jù)接收到的返回碼,利用恰當(dāng)?shù)摹疤崛∈ 睒?biāo)志,標(biāo)記正被處理的、輸入緩沖區(qū)內(nèi)的表目}釋放互斥體}/*永遠(yuǎn)重復(fù)執(zhí)行循環(huán)結(jié)束*/}表2后臺(tái)順序文件緩沖區(qū)處理程序的偽碼表示過(guò)程后臺(tái)順序文件緩沖區(qū)處理程序(a/k/a磁盤文件管理程序){當(dāng)一條“讀順序文件”指令使得輸入緩沖區(qū)溢出時(shí){將輸入緩沖區(qū)中的內(nèi)容拷貝到順序磁盤文件中將下一組表目讀到輸入緩沖區(qū)中將附加緩沖區(qū)的內(nèi)容添加到順序磁盤文件的尾部清空附加緩沖區(qū),為新表目做準(zhǔn)備}當(dāng)“添加表目到順序文件中”指令引起附加緩沖區(qū)溢出時(shí){將附加緩沖區(qū)的內(nèi)容添加到順序磁盤文件的尾部清空附加緩沖區(qū),為新表目做準(zhǔn)備將等待處理的新表目添加到附加緩沖區(qū)的起始位置}
權(quán)利要求
1.一種用于定位數(shù)據(jù)集的系統(tǒng),該數(shù)據(jù)集包括存儲(chǔ)在遠(yuǎn)程訪問(wèn)計(jì)算機(jī)上的Web頁(yè),各個(gè)Web頁(yè)具有唯一URL,至少部分所述Web頁(yè)含有鏈接到其他一些Web頁(yè)的URL鏈接,該系統(tǒng)包括一個(gè)通信接口,該接口根據(jù)相應(yīng)的URL,從所述遠(yuǎn)程計(jì)算機(jī)中提取特定的Web頁(yè);一個(gè)Web信息文件,具有表目集,每個(gè)表目對(duì)于相應(yīng)Web頁(yè)指示URL和提取狀態(tài)信息;一個(gè)Web信息表,存儲(chǔ)在RAM中,具有一組表目,每個(gè)表目代表相應(yīng)Web頁(yè)的指紋函數(shù)值和提取狀態(tài)信息;和實(shí)現(xiàn)由該系統(tǒng)執(zhí)行的Web scooter過(guò)程的裝置,該過(guò)程用于提取和分析Web頁(yè),所述Web scooter過(guò)程包括以下指令根據(jù)所述提取狀態(tài)信息,提取其Web信息文件表目滿足既定選擇準(zhǔn)則的Web頁(yè)的指令;確定Web信息表中是否存儲(chǔ)有每個(gè)收到的Web頁(yè)中的各URL鏈接的相應(yīng)表目的指令;以及對(duì)于Web信息表中沒(méi)有其對(duì)應(yīng)表目的各URL鏈接,在Web信息表中添加新表目和在Web信息文件中添加相應(yīng)的新表目的指令。
2.權(quán)利要求1的系統(tǒng),該系統(tǒng)包括在重疊時(shí)間段內(nèi)執(zhí)行該Webscooter過(guò)程的多個(gè)線程,包括這樣的裝置使得當(dāng)某些線程提取Web頁(yè)時(shí),其他Web頁(yè)線程正在分析已提取的Web頁(yè)。
3.權(quán)利要求2的系統(tǒng),包括一個(gè)互斥體,其中由各線程執(zhí)行的Web scooter過(guò)程包括在訪問(wèn)Web信息表和Web信息文件之前,申請(qǐng)并等待該互斥體的指令。
4.權(quán)利要求3的系統(tǒng),包括一個(gè)輸入緩沖區(qū)和一個(gè)附加緩沖區(qū);一個(gè)文件管理程序,該程序用于將Web信息文件中的順序排列的表目塊,存儲(chǔ)到輸入緩沖區(qū)中;所述Web scooter過(guò)程掃描并分析輸入緩沖區(qū)內(nèi)的Web信息文件表目,以便定位滿足所述既定選擇準(zhǔn)則的所述Web信息文件表目;所述Web scooter過(guò)程,將將要添加到所述Web信息中的所有表目,存儲(chǔ)到所述附加緩沖區(qū)內(nèi);和所述文件管理程序用于將附加緩沖區(qū)內(nèi)的眾多表目,移到Web信息文件中。
5.權(quán)利要求1的系統(tǒng),其中輔助存儲(chǔ)器內(nèi)的各個(gè)表目包含有第一存儲(chǔ)器內(nèi)對(duì)應(yīng)表目的地址。
6.一種用于定位數(shù)據(jù)集的方法,該數(shù)據(jù)集包括存儲(chǔ)在遠(yuǎn)程訪問(wèn)計(jì)算機(jī)上的Web頁(yè),各個(gè)Web頁(yè)具有唯一URL,至少部分所述Web頁(yè)含有鏈接到其他一些Web頁(yè)的RUL鏈接,包括以下步驟存儲(chǔ)具有一組表目的Web信息文件,各表目代表相應(yīng)Web頁(yè)的URL和提取狀態(tài)信息;在RAM內(nèi)存儲(chǔ)具有一組表目的Web信息表,各表目代表相應(yīng)Web頁(yè)的指紋函數(shù)值和提取狀態(tài)信息;和執(zhí)行Web scooter過(guò)程,以便提取和分析Web頁(yè),該過(guò)程包括(A)順序掃描Web信息文件內(nèi)的表目,以便確定哪個(gè)所述表目滿足既定選擇準(zhǔn)則,(B)提供其Web信息文件表目滿足既定選擇準(zhǔn)則的Web頁(yè),(C)確定Web信息表內(nèi)是否存在已接收Web頁(yè)內(nèi)鏈接到另一Web頁(yè)的URL鏈接的對(duì)應(yīng)表目,和(D)對(duì)于Web信息表中沒(méi)有其對(duì)應(yīng)表目的各URL鏈接,在Web信息表中添加新表目和在Web信息文件中添加相應(yīng)的新表目。
7.權(quán)利要求6的方法,包括以多線程方式,在重疊時(shí)間段內(nèi)執(zhí)行所述Web scooter過(guò)程,這樣,當(dāng)某些線程提取Web頁(yè)時(shí),其他Web頁(yè)線程正在分析已提取的Web頁(yè)。
8.權(quán)利要求7的方法,包括定義一個(gè)互斥體,當(dāng)各所述線程執(zhí)行所述Web scooter過(guò)程時(shí),在訪問(wèn)Web信息表和Web信息文件之前,各線程申請(qǐng)并等持該互斥體。
9.權(quán)利要求8的方法,包括以下步驟在所述RAM內(nèi)定義一個(gè)“輸入緩沖區(qū)”和一個(gè)“附加緩沖區(qū)”;將Web信息文件內(nèi)順序排列的表目塊存儲(chǔ)到輸入緩沖區(qū)中;順序掃描Web信息文件內(nèi)表目的所述步驟包括掃描輸入緩沖區(qū)內(nèi)的Web信息文件表目,以便確定哪個(gè)所述Web信息文件表目滿足所述既定選擇準(zhǔn)則;將將要添加到所述文件中的所有表目,存儲(chǔ)到所述附加緩沖區(qū)內(nèi);和將附加緩沖區(qū)內(nèi)的眾多表目,移到Web信息文件中。
10.權(quán)利要求6的方法,其中Web信息表內(nèi)的各個(gè)表目,包含有Web信息文件內(nèi)對(duì)應(yīng)表目的地址,所述方法包括通過(guò)讀取Web信息表內(nèi)相應(yīng)表目?jī)?nèi)的地址,然后讀取位于所述地址的所述Web信息文件內(nèi)的所述表目,訪問(wèn)所述Web信息文件內(nèi)的所述表目中的一個(gè)。
11.一種用于定位數(shù)據(jù)集的裝置,該數(shù)據(jù)集被存儲(chǔ)在與網(wǎng)絡(luò)相連的計(jì)算機(jī)上,利用一個(gè)地址唯一標(biāo)識(shí)各數(shù)據(jù)集,至少某些數(shù)據(jù)集包含有一個(gè)以上的、存儲(chǔ)在計(jì)算機(jī)上的其他數(shù)據(jù)集的鏈接地址,該裝置包括一個(gè)與計(jì)算機(jī)網(wǎng)絡(luò)相連的通信接口。該通信接口用于向計(jì)算機(jī)發(fā)送請(qǐng)求,以請(qǐng)求特定數(shù)據(jù)集,并根據(jù)所述請(qǐng)求接收數(shù)據(jù)集,其中各請(qǐng)求中包含有特定數(shù)據(jù)集的地址;一個(gè)內(nèi)部存儲(chǔ)器,用于存儲(chǔ)第一組表目,第一組表目中的各表目包含有對(duì)應(yīng)數(shù)據(jù)集的地址,以及對(duì)應(yīng)數(shù)據(jù)集的狀態(tài)信息;一個(gè)外部存儲(chǔ)器,用于存儲(chǔ)第二組表目,第二組表目中的各表目包含有對(duì)應(yīng)數(shù)據(jù)集地址的編碼,以及對(duì)應(yīng)數(shù)據(jù)集的狀態(tài)信息的編碼;和線程裝置,與內(nèi)部存儲(chǔ)器、外部存儲(chǔ)器以及通信接口相連,用于順序讀取第一表目組內(nèi)的所有表目,為滿足既定的基于狀態(tài)選擇準(zhǔn)則的、第一表目組內(nèi)的相應(yīng)表目中的特定數(shù)據(jù)集生成請(qǐng)求,根據(jù)接收的特定數(shù)據(jù)集,如果第二表目組內(nèi)沒(méi)有與已接收數(shù)據(jù)集內(nèi)至少一地址子集相對(duì)應(yīng)的表目,就在所述第一表目組內(nèi)和第二表目組內(nèi)創(chuàng)建新表目。
12.權(quán)利要求11的裝置,其中第二表目組內(nèi)的各表目包括第一表目組內(nèi)對(duì)應(yīng)表目的地址,所述第二表目組內(nèi)用于索引第一表目組。
13.權(quán)利要求11的裝置,包括眾多所述線程裝置,這樣,當(dāng)某些線程裝置生成所述請(qǐng)求,并接收所述特定數(shù)據(jù)集時(shí),其他線程裝置在所述內(nèi)部存儲(chǔ)器內(nèi)和外部存儲(chǔ)器內(nèi)創(chuàng)建新表目。
14.權(quán)利要求13的裝置,包括一個(gè)互斥體,其中每個(gè)所述線程裝置包含有用于在訪問(wèn)內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之前,請(qǐng)求并等待互斥體的邏輯。
15.權(quán)利要求14的裝置,包括位于所述輔助存儲(chǔ)器內(nèi)的一個(gè)輸入緩沖區(qū)和一個(gè)附加緩沖區(qū);一個(gè)管理程序,該程序?qū)?nèi)部存儲(chǔ)器內(nèi)順序排列的表目組,存儲(chǔ)到輸入緩沖區(qū)中;每個(gè)所述線程裝置包含有用于掃描并分析輸入緩沖區(qū)內(nèi)所有表目的裝置,以便定位滿足所述既定的基于狀態(tài)的選擇準(zhǔn)則的所述表目的裝置;將要添加到所述內(nèi)部存儲(chǔ)器中的所有表目,存儲(chǔ)到所述附加緩沖區(qū)中的各個(gè)所述線程裝置;和所述管理程序還具有用于將附加緩沖區(qū)內(nèi)的眾多表目,移動(dòng)到內(nèi)部存儲(chǔ)器中的裝置。
16.一種用于定位被存儲(chǔ)在與網(wǎng)絡(luò)相連的計(jì)算機(jī)上的數(shù)據(jù)集的方法,利用一個(gè)地址唯一標(biāo)識(shí)各數(shù)據(jù)集,至少某些數(shù)據(jù)集包含有一個(gè)以上的、存儲(chǔ)在計(jì)算機(jī)上的其他數(shù)據(jù)集的鏈接地址,該方法包括以下步驟(A)在內(nèi)部存儲(chǔ)器內(nèi)存儲(chǔ)第一表目組,所述第一表目組內(nèi)的各表目包含有相應(yīng)數(shù)據(jù)集的地址,以及相應(yīng)數(shù)據(jù)集的狀態(tài)信息;(B)在外部存儲(chǔ)器內(nèi)存儲(chǔ)第二表目組,所述第二表目組內(nèi)的各表目包含有相應(yīng)數(shù)據(jù)集地址的編碼,以及相應(yīng)數(shù)據(jù)集狀態(tài)信息的編碼;(C)順序讀取第一表目組內(nèi)的所有表目;(D)利用網(wǎng)絡(luò)向計(jì)算機(jī)發(fā)送請(qǐng)求,請(qǐng)求其第一表目組內(nèi)相應(yīng)表目滿足既定的、基于狀態(tài)的選擇準(zhǔn)則的特定數(shù)據(jù)集;和(E)根據(jù)接收的特定數(shù)據(jù)集,如果第二表目組內(nèi)沒(méi)有與已接收數(shù)據(jù)集內(nèi)至少一地址子集相對(duì)應(yīng)的表目,就在所述第一表目組內(nèi)和第二表目組內(nèi)創(chuàng)建新表目。
17.權(quán)利要求16的方法,其中所述步驟B包括在第二表目組內(nèi)的各表目中存儲(chǔ)第一表目組內(nèi)對(duì)應(yīng)表目的地址,所述第二表目組用于索引第一表目組。
18.權(quán)利要求16的方法,包括在重疊時(shí)間段內(nèi),用眾多線程執(zhí)行步驟C、D和E,這樣,當(dāng)某些線程提取數(shù)據(jù)集時(shí),其他數(shù)據(jù)集線程正在分析已提取的數(shù)據(jù)集。
19.權(quán)利要求18的方法,包括定義一個(gè)互斥體;和在訪問(wèn)內(nèi)部存儲(chǔ)器內(nèi)的第一表目組和第三存儲(chǔ)器內(nèi)的第二表目組之前,各所述線程請(qǐng)求并等待該互斥體。
20.權(quán)利要求19的方法,包括在所述外部存儲(chǔ)器內(nèi),定義一個(gè)輸入緩沖區(qū)和一個(gè)附加緩沖區(qū);將第一表目組內(nèi)順序排列的表目塊,存儲(chǔ)到輸入緩沖區(qū)內(nèi);所述順序讀取步驟包括以下步驟,順序讀取輸入緩沖區(qū)內(nèi)的表目,并確定所述輸入緩沖區(qū)內(nèi)的哪個(gè)表目滿足既定的、基于狀態(tài)的選擇準(zhǔn)則;將要添加到所述內(nèi)部存儲(chǔ)器內(nèi)的所有表目,添加到所述附加緩沖區(qū)中;和將附加緩沖區(qū)內(nèi)的眾多表目,移到內(nèi)部存儲(chǔ)器中。
全文摘要
一種用于快速提取和分析WWW上或計(jì)算機(jī)網(wǎng)絡(luò)上Web頁(yè)的Web crawler系統(tǒng)和方法,該系統(tǒng)和方法包括存貯在隨機(jī)存取存儲(chǔ)器上的散列表和一個(gè)順序Web信息文件。對(duì)于系統(tǒng)已知的每個(gè)Web頁(yè),Web crawler系統(tǒng)在順序磁盤文件中存儲(chǔ)一個(gè)表目,在散列表中存儲(chǔ)一個(gè)較小的表目。該散列表表目包括一個(gè)指紋值、一個(gè)提取標(biāo)志和一個(gè)文件定位指示器,其中僅當(dāng)成功提取到相應(yīng)的Web頁(yè)時(shí),才將提取標(biāo)志設(shè)置為真,而文件定位指示項(xiàng)表示相應(yīng)表目在順序磁盤文件中的位置。每個(gè)順序磁盤文件表目包括相應(yīng)Web頁(yè)的URL,以及該Web頁(yè)提取狀態(tài)信息。對(duì)Web頁(yè)信息磁盤文件的所有訪問(wèn),是利用輸入緩沖區(qū)順序進(jìn)行的,從而消除了對(duì)Web信息磁盤文件的隨機(jī)存取,并且最大限度地降低了磁盤訪問(wèn)所引起的等待時(shí)間。
文檔編號(hào)G06F12/00GK1811757SQ20051000680
公開(kāi)日2006年8月2日 申請(qǐng)日期1996年12月10日 優(yōu)先權(quán)日1995年12月13日
發(fā)明者露易斯·M.·墨尼爾 申請(qǐng)人:奧弗圖爾服務(wù)公司