專利名稱:用于多版本W(wǎng)eb文檔的Web服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及因特網(wǎng),更具體地說涉及訪問和跟蹤可經(jīng)因特網(wǎng)訪問的內(nèi)容的問題。
背景技術(shù):
通過因特網(wǎng)的HTTP協(xié)議使之成為可能的因特網(wǎng)以及具體來說的WWW在我們訪問 信息的方式上呈現(xiàn)變革性的發(fā)展。圖1示出WWW123提供的信息訪問系統(tǒng)101如何觀察具 有Web瀏覽器和用于永久存儲數(shù)據(jù)的硬盤驅(qū)動器129的計算機127的用戶。此類系統(tǒng)稱為 Web客戶端125。除了 Web客戶端125外,系統(tǒng)101還包括可經(jīng)WWW 123訪問的Web服務(wù)器 111。如有關(guān)Web服務(wù)器111 (a)的詳細圖示,Web服務(wù)器包括處理器113 (a)和含有可經(jīng)Web 訪問的文檔121的數(shù)據(jù)存儲器119(a)。這些文檔在下文中稱為Web文檔。Web文檔121可 以包含任何類型的信息或多種類型信息的混合;例如它可以是圖像或音頻文件以及文本文 檔。為了訪問WffW上的文檔,客戶端125中的Web瀏覽器的用戶向Web 123提供該Web 文檔的URL(統(tǒng)一資源定位符)。Web 123將URL路由到Web服務(wù)器111 (i),該Web服務(wù)器 lll(i)包含URL指定的Web文檔。Web服務(wù)器lll(i)通過將指定的Web文檔經(jīng)Web提供到 Web客戶端125來響應(yīng)該URL。瀏覽器然后顯示該Web文檔。Web文檔通常包含至其他Web 文檔的鏈接,即URL。當用戶通過單擊這些鏈接的其中之一來選擇它時,瀏覽器將URL提供 到Web 123,如剛才所述由駐留該Web文檔的Web服務(wù)器將Web文檔提供到Web客戶端。123處示出了一個示范URL。URL具有三個主要的部分協(xié)議105,它指定將用于檢 索Web文檔的因特網(wǎng)協(xié)議,在此情況中為WWW中使用的http協(xié)議;主機名107,它指定存儲 Web文檔的Web服務(wù)器111 (i);以及Web頁面源信息109,它指定要如何定位Web文檔或以 其他方式在Web服務(wù)器111 (i)產(chǎn)生Web文檔。在示范URL 103中,Web頁面源信息109是 “路徑名”,它指示如何在Web服務(wù)器111 (i)可訪問的文件系統(tǒng)中定位Web文檔;在其他URL 中,Web頁面源信息109可以指定查詢數(shù)據(jù)庫來定位Web文檔的程序或即時地構(gòu)造整個或部 分Web文檔的程序。在Web服務(wù)器111 (a)中通過執(zhí)行源信息解釋代碼117 (a)來解釋Web 頁面源信息109。如下是URL的完整語法<協(xié)議名> //<主機名 > 〈端口號>/<路徑名> ? <參數(shù)列表><協(xié)議名 >、< 主機名 > 和 < 路徑名 > 均已解釋;〈端口號〉指定Web服務(wù)器111 (a) 監(jiān)聽Web頁源信息109指定的信息所在的端口 ;廣泛使用的協(xié)議(如HTTP協(xié)議)的應(yīng)用程 序具有URL中未指定端口號的情況下客戶端125為該協(xié)議提供的缺省端口號。< 參數(shù)列表 >是源信息解釋代碼117解釋的參數(shù)的列表;這些參數(shù)可以指定要執(zhí)行的程序和用于該程序的數(shù)據(jù)參數(shù)。該參數(shù)列表由一個或多個以&字符分隔的參數(shù)名-參數(shù)值對組成。<參數(shù)名 > = < 參數(shù)值1 . . &<參數(shù)名 > = < 參數(shù)值>無論何時,只要將Web客戶端125連接到提供對WWW 123訪問的物理網(wǎng)絡(luò),Web客 戶端125此時就可以訪問處于工作狀態(tài)的任何Web服務(wù)器111。因為大多數(shù)Web服務(wù)器持 續(xù)工作,所以經(jīng)WWW可獲取的大多數(shù)信息在任何時間任何地點都是可獲取的。因此,Web用 戶往往不復(fù)制他們在Web客戶端125中檢索到的信息;而是將含有該信息的Web文檔的URL 保存在感興趣URL列表131中。此類列表的一個示例是大多數(shù)Web瀏覽器提供的“收藏夾” 或“書簽”列表。當用戶希望再次訪問信息時,用戶只需單擊收藏夾列表中的URL,由此將 URL提供到瀏覽器。保存URL而不是它們引用的Web文檔存在優(yōu)缺點。二者都來自WWW的動態(tài)特性。 URL不是Web文檔的圖書館卡編目號。圖書的圖書館卡編目號唯一地標識圖書的特定版本。 如果出新版本的圖書,則它得到新的圖書館卡編目號。新的卡編目號將與其他版本的編號 相似,因為兩個版本將以相同方式分類,但是將不會與其他版本的編號完全相同。因為每個 版本擁有各自的圖書館卡編目號,所以抄寫下特定版本的卡編目號的讀者十年后將該編號 呈交給擁有該版本的圖書館,將得到該版本。與之相比,URL僅標識Web服務(wù)器111 (i)和該服務(wù)器響應(yīng)Web頁源信息將返回的 Web文檔。沒有任何保證可確保該URL指定的服務(wù)器將是可用的甚至仍存在,也無法保證服 務(wù)器將返回的Web文檔與客戶端保存該URL時所顯示的文檔相同。實際返回什么完全取決 于服務(wù)器。這種安排的優(yōu)點在于服務(wù)器一般返回的是該Web文檔的最近版本。對于例如包 含天氣預(yù)報或股市報價的許多Web文檔,這的確是所需要的。其缺點在于Web文檔的較舊 版本不再可通過URL訪問,并完全不可訪問。當前可訪問的Web文檔與較舊版本具有什么 關(guān)系常常也是不明確的。這樣導(dǎo)致困難的一個問題是軟件的文件。越來越多地,軟件制造 商通過WWW提供此類文件;如果該文件的URL指定軟件的當前版本,則完全沒有給擁有較舊 版本的用戶留下文件。Web瀏覽器127的用戶需要解決此問題的唯一方式是在他的Web客 戶端中保存文件的本地版本。這樣做,用戶當然喪失Web最重要的一個優(yōu)勢能夠保存URL 而不是副本。解決該問題的一個嘗試是建立Web歸檔服務(wù),例如mm. archive, org中可得到的。 此類服務(wù)有通用檔案所存在的所有問題它們都很巨大,但是常常沒有個人所需要的,人們 通常很少或不輸入檔案要保存什么。此外,Web客戶端可訪問的大量信息并非公眾可獲取 的,因此將不通過歸檔服務(wù)歸檔。這種情況出現(xiàn)在Web服務(wù)器位于防火墻后面,該防火墻將 公眾因特網(wǎng)與所說的內(nèi)聯(lián)網(wǎng)隔開,該內(nèi)聯(lián)網(wǎng)利用因特網(wǎng)但是僅對該內(nèi)聯(lián)網(wǎng)所屬組織已知的 Web客戶端可訪問。因此,該服務(wù)器可被也在該防火墻后面或?qū)τ诜阑饓κ且阎腤eb客戶 端訪問,但是對于一般的Web客戶端不可訪問。此類內(nèi)聯(lián)網(wǎng)是目前組織內(nèi)通信的首選方式 的其中之一。本文公開的本發(fā)明的目的在于提供用于克服通過URL訪問其文檔的上述問題的 技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的通過倉庫(r印ository)服務(wù)器來實現(xiàn),該倉庫服務(wù)器提取文檔URL指定的文檔,將該文檔的副本存儲在倉庫服務(wù)器,并向倉庫服務(wù)器提供存儲副本的URL,Web 客戶端可使用該URL來提取存儲副本。倉庫服務(wù)器使存儲副本與該文檔的文檔URL相關(guān), 并且與存儲副本在倉庫服務(wù)器中的標識符相關(guān)。倉庫服務(wù)器因此可以包含特定文檔URL表 示的多個版本的文檔的存儲副本,同時每個存儲副本對應(yīng)于一個唯一的倉庫服務(wù)器URL。倉 庫還為存儲副本創(chuàng)建指紋。指紋是存儲副本的小編碼版本,它保存表征存儲副本的結(jié)構(gòu)和 內(nèi)容的信息。指紋是可比較的,用于確定一對文檔的相似度。將每個存儲副本的指紋與倉 庫中存儲副本相關(guān)聯(lián),倉庫還將與給定存儲副本相似的其他存儲副本的列表與該給定存儲 副本相關(guān)聯(lián)。由提供到倉庫服務(wù)器的客戶端的頁面組成的用戶界面允許客戶端的用戶登記文 檔,登記該文檔通過指定該操作并提供該文檔的文檔URL來執(zhí)行。倉庫服務(wù)器通過如下操 作來響應(yīng)制作存儲副本,制作存儲副本的倉庫URL,使存儲副本與文檔URL和存儲副本的 標識符相關(guān),制作存儲副本的指紋,以及制作相似存儲副本的存儲副本的列表。用戶界面還允許用戶提取文檔的內(nèi)容,提取文檔的內(nèi)容通過指定該操作并輸入至 倉庫服務(wù)器的存儲副本的倉庫URL來執(zhí)行。倉庫服務(wù)器通過如下操作響應(yīng)倉庫URL 首先 使用與存儲副本相關(guān)聯(lián)的文檔URL以確定該文檔在網(wǎng)絡(luò)上是否可訪問;如果可以,則將客 戶端重定向到文檔URL指定的位置;如果文檔不可訪問,則返回倉庫URL指定的存儲副本。此外,用戶界面還允許用戶跟蹤文檔的存儲副本。用戶在客戶端中指定倉庫URL 和操作,而倉庫服務(wù)器通過提供具有與倉庫URL指定的副本相關(guān)的文檔URL相同的文檔URL 的存儲副本的倉庫URL的列表來響應(yīng)。在該操作的一個實施例中,倉庫服務(wù)器還通過提供 與倉庫URL指定的存儲副本相似的存儲副本的倉庫URL的列表來響應(yīng)。從任何一個列表中 選擇倉庫URL使倉庫服務(wù)器通過向客戶端提供倉庫URL指定的存儲副本來響應(yīng)。在其他方面,本發(fā)明涉及用于制作和比較指紋的技術(shù),包括用于確定兩個存儲副 本是否足夠相似以保證指紋的比較的技術(shù)、用于制作倉庫URL的技術(shù)和重寫和使用存儲副 本中的鏈接的技術(shù)。對于本領(lǐng)域技術(shù)人員來說,在閱讀下文的具體實施方式
和附圖時顯而易見將設(shè)想 到其他目的和優(yōu)點,其中
圖1示出用于經(jīng)因特網(wǎng)訪問信息的現(xiàn)有技術(shù)系統(tǒng); 圖2是本發(fā)明的Web服務(wù)器的框圖; 圖3是服務(wù)器的⑶I的最上層Web頁面; 圖4示出在Web上該頁面不可獲取的情況下呈現(xiàn)的Web頁面; 圖5示出用戶請求版本跟蹤的情況下呈現(xiàn)的Web頁面; 圖6是登記的文檔表215的實體關(guān)系圖; 圖7示出HTML文檔和由該文檔構(gòu)成的樹; 圖8示出用于制作指紋的算法;
圖9示出通過比較由文檔構(gòu)成的指紋來確定文檔的相似性的算法;以及 圖10示出用于針對不相似性過濾文檔的算法。
附圖中的引用編號具有三個或三個以上的數(shù)字最右邊兩個數(shù)字是余下數(shù)字指示的附圖中的引用編號。因此,引用編號203的項首先在圖2中以項203形式出現(xiàn)。
具體實施例方式下文的具體描述首先呈示多版本文檔的Web服務(wù)器的概述,然后將描述用戶界 面,最后將呈示W(wǎng)eb服務(wù)器的多種組成部分的細節(jié)。用于多版本文檔的Web服務(wù)器的概述圖2圖2是用于多版本W(wǎng)eb文檔的Web服務(wù)器201的框圖。在下文一些部分中,服務(wù) 器201稱為倉庫服務(wù)器。從Web客戶端125的角度來看,Web服務(wù)器201是標準Web服務(wù)器 111。當客戶端125將指定Web服務(wù)器201的URL置于Web 123上時,Web 123將該URL傳 遞到服務(wù)器201,服務(wù)器201通過向客戶端125返回Web頁面來響應(yīng)URL。與任何其他Web 服務(wù)器一樣,服務(wù)器201具有兩個主要組成部分響應(yīng)指定服務(wù)器201的主機名115的URL 來執(zhí)行代碼的處理器202,以及用于URL指定的Web頁面或用于制作該Web頁面所需的信 息的存儲器。這里,存儲器119包括用戶界面的Web頁面225,Web客戶端125使用該用戶 界面來控制文檔服務(wù)器201和登記Web文檔的數(shù)據(jù)庫213。登記Web文檔是已經(jīng)在服務(wù)器 201中登記的Web文檔,即服務(wù)器201已經(jīng)在Web文檔在數(shù)據(jù)庫213中登記時制作了該Web 文檔的副本223,并已經(jīng)制作登記版本URL 227,其中多版本文檔服務(wù)器201可以通過向作 為登記版本URL的源的Web客戶端125提供登記版本URL 227引用的版本副本223來響應(yīng) 登記版本URL 227。在該優(yōu)選實施例中,副本223有兩個部分作為與登記時接收的副本完 全一樣的副本的原始副本222,以及其中重寫了鏈接的重寫副本224。稍后將詳細論述為什 么重寫鏈接是必要的以及如何實現(xiàn)。利用登記版本URL 227提取Web頁面登記版本URL 227是標準的URL 它指定協(xié)議105、主機名107 (這里是服務(wù)器201 的主機名)和Web頁面源信息109。登記版本URL 227中的Web頁面源信息包括指定程序 230的參數(shù)列表,上述程序230要在處理器202中執(zhí)行以提供要在程序執(zhí)行中使用的Web頁 面和數(shù)據(jù)。這里,程序是gc,它提取登記Web頁面的內(nèi)容,gc是處理器202執(zhí)行的版本位 置代碼203中的程序之一。當執(zhí)行版本位置代碼203時,服務(wù)器201是稍后稱為登記文檔 提供器的一個實施例,gc取用兩個參數(shù)唯一地標識數(shù)據(jù)庫213中的登記Web頁面的副本 223的登記標識符231和所提取的頁面的原始URL 233。在優(yōu)選實施例中,當多版本文檔服 務(wù)器201接收到登記版本URL 227時,它執(zhí)行g(shù)c程序。gc首先嘗試建立服務(wù)器201與原始 URL 233指定的服務(wù)器111 (i)之間的連接;如果成功的話,gc重定向Web客戶端以使用原 始URL 233提取Web頁面。如果建立連接的嘗試失敗,則gc使用登記ID 231來定位數(shù)據(jù) 庫213中的副本223,然后將該副本返回到Web客戶端125。當如剛才所描述的在使用時, 多版本文檔服務(wù)器201確保當Web客戶端125將登記版本URL 227提供到服務(wù)器201時, 客戶端125將接收到由登記標識符231所指定的Web頁面的副本223,即使原始URL 233指 定的文檔是不可獲取時。版本位置代碼203需要解釋登記版本URL 227的信息包含在登記文檔表215中的 登記信息217中。登記信息217使副本223與用于提取據(jù)由之制作副本223的Web頁面的 原始URL相關(guān)以及與唯一地標識該副本223的登記標識符相關(guān)。因為登記標識符唯一地標 識副本223,所以數(shù)據(jù)庫213可以包含由原始URL標識的不同版本的Web文檔。而且,因為登記標識符包括在登記版本URL 227中,所以登記版本URL對于每個版本是唯一的,并且可 被客戶端125用于從服務(wù)器201提取特定版本的副本223。在優(yōu)選實施例中,這通過將來自 URL227的登記ID 231輸入到服務(wù)器201提供的用戶界面來執(zhí)行;在其他版本中,這可以通 過將URL 227提供到用戶界面,然后指定服務(wù)器201是否要返回原始URL 223當前指定的 版本或登記標識符231指定的副本。正如稍后將更詳細解釋的,對于給定副本223 (i),用戶 還可以指定他或她想要原始副本222 (i)還是重寫副本224 (i)。在服務(wù)器201中登記Web頁面Web客戶機的用戶通過將要登記的Web頁面的URL輸入到用戶界面Web頁面225 的Web頁面而在服務(wù)器201中登記Web頁面。響應(yīng)從Web頁面的輸入,服務(wù)器201執(zhí)行登 記代碼207,該登記代碼207提取URL當前指定的文檔,為它生成登記ID,在登記信息217 中為該登記ID創(chuàng)建項(包括原始URL、登記ID和該文檔的副本在數(shù)據(jù)庫213中的位置), 然后創(chuàng)建副本223的URL 227并將其返回到用戶,然后該用戶可以如上述地使用它。當執(zhí) 行登記代碼207時,服務(wù)器201是稍后稱為文檔登記器的一個實施例。Web頁面的自動登記服務(wù)器201的優(yōu)選實施例將執(zhí)行Web頁面的自動登記。在優(yōu)選實施例中,服務(wù)器 201的管理員可以指定一定范圍的感興趣IP地址。服務(wù)器201將執(zhí)行自動登記代碼212,這 提取那些地址處的Web內(nèi)容并在服務(wù)器201中如上述地登記它們。自動登記的變化包括1.鏈接的自動登記從登記URL開始,分析該URL標識的文檔中的所有引用鏈接, 并自動登記那些URL鏈接。系統(tǒng)可以提供選項以將URL的登記限于來自相同Web網(wǎng)站(域) 的那些。2.鏈接的遞歸自動登記從登記URL開始,以遞歸方式跟蹤URL標識的文檔中的 所有URL鏈接,只要它們來自相同Web網(wǎng)站(域)。注意該選項對于某些Web網(wǎng)站將是耗時 的。3.自動計劃的登記設(shè)置時間表以登記其內(nèi)容版本和更改均是頻繁/周期性的且 重要的某些URL。例如,可以使用每日時間表自動登記指向內(nèi)部每日“應(yīng)做”列表的URL。當然,可以將鏈接的自動登記和鏈接的遞歸自動登記與其他形式的自動登記組 合。本發(fā)明的其他實施例還可以提供用戶界面,該用戶界面允許服務(wù)器201的用戶設(shè)置Web 客戶端125的用戶個人感興趣的URL的自動登記。使用下文描述的文檔指紋和指紋比較技 術(shù),另一個實施例中的服務(wù)器201可以將文檔的自動登記限于與已經(jīng)登記的文檔有實質(zhì)性 不同的那些。使用服務(wù)器201產(chǎn)生副本223的版本歷史登記信息217還可以用于提供使用特定原始URL提取的版本副本223的版本歷 史。因為登記信息使原始URL與登記ID相關(guān),所以處理器202可以使用登記ID查詢登記 信息217并接收與該登記ID所標識的副本223的URL具有相同原始URL的文檔版本的副 本223的登記標識符的列表。服務(wù)器201使用登記ID和原始URL來構(gòu)造登記ID所指定的 副本223的URL 227的列表。該列表作為Web頁面中的鏈接被返回到Web客戶端125,然后 用戶就可以單擊鏈接以選擇特定的版本。當服務(wù)器201接收到對應(yīng)于所選鏈接的URL 227 時,它使用該URL將URL 227所指定的副本223返回到Web客戶端125。在其他實施例中, 服務(wù)器201可以響應(yīng)原始URL或登記版本URL 227的輸入來提供版本歷史。在前一種情況中,原始URL用于執(zhí)行查詢;在后一種情況中,來自登記版本URL 227的原始URL 233用于 執(zhí)行查詢。URL 搜索服務(wù)器201可以具有數(shù)以千計的登記文檔,每個登記文檔具有各自的副本223和 登記版本URL 227。在一些實施例中,提供URL搜索功能會是有用的。在URL搜索中,Web 客戶端125處的用戶將搜索字符串輸入到服務(wù)器201提供的Web頁面225,服務(wù)器201搜 索包含用戶輸入的搜索字符串的原始URL的登記信息217。當然在搜索字符串中可以使用 通配字符。服務(wù)器201還可以提供區(qū)分大小寫和不區(qū)分大小寫搜索和基于URL或登記時間 的排序。作為從URL搜索操作的輸出,服務(wù)器201返回Web頁面,Web頁面上具有包含匹配 URL 227的鏈接的列表和對應(yīng)于每個匹配URL的登記ID 231和登記時間。這里應(yīng)該指出的是雖然服務(wù)器201登記URL,但是剛才描述的技術(shù)可以結(jié)合任何 類型的可用于提取數(shù)據(jù)項的定位符或標識符來使用。為此,有時在下文中使用通用術(shù)語文 檔定位符作為任何其他類型的可用于提取數(shù)據(jù)項的定位符或標識符的URL的通用術(shù)語。如 下是登記所需的項·將三件事彼此相關(guān)的服務(wù)器201可獲取的數(shù)據(jù)結(jié)構(gòu)-服務(wù)器201可訪問的已登記的數(shù)據(jù)項的副本;-登記時用于提取數(shù)據(jù)項的原版的文檔定位符;以及-唯一地標識服務(wù)器201可訪問的副本的副本登記標識符。·服務(wù)器201通過提取副本來響應(yīng)副本的文檔定位符。對副本223執(zhí)行的操作可以對版本副本223執(zhí)行許多操作,這進一步增加服務(wù)器201的有用性。其中有 相對鏈接重寫、對副本223進行指紋處理、基于它們的指紋比較副本223,以及將索引包括 到數(shù)據(jù)庫213中的副本223的內(nèi)容中。鏈接重寫Web頁面使用HTML來定義(超文本標記語言)。在HTML中,可以將至另一個Web 頁面的鏈接編寫為絕對鏈接,絕對鏈接指定完整的URL,包括協(xié)議105、主機名107和Web頁 面源信息109,或者編寫為相對鏈接,相對鏈接由追加到用戶用來提取包含相對鏈接的Web 頁面的URL的Web頁面源信息109組成。因為使用相對鏈接構(gòu)成的URL總是具有來自用于 提取含該相對鏈接的Web頁面的URL的協(xié)議和主機名,所以使用相對鏈接引用與包含該相 對鏈接的Web頁面相同的主機中包含的其他Web頁面。當在服務(wù)器201中登記URL并且將該URL指定的Web頁面的副本添加到版本副本 223時,副本223自然不再存在于為其寫副本223的原版的主機的Web服務(wù)器中,并且副本 223中的相對鏈接將結(jié)束用于提取副本223的URL,即指定服務(wù)器201的URL。為了解決這 個問題,當服務(wù)器201提取正在登記的URL所引用的Web頁面并將該Web頁面的副本添加 到版本副本223時,它制作兩個副本_其一,原始副本222,這是登記時提取的原版的真正 副本,其二,重寫副本224,這是在其中重寫了版本副本223中的所有相對鏈接的副本,由此 當用戶單擊相對鏈接時,服務(wù)器201提供絕對URL,該絕對URL與登記版本URL 227 一樣采 用gc程序以將客戶端125重定向到從其中獲取所提取的Web頁面的主機的主機名所構(gòu)成 的URL指定的服務(wù)器111 (i)。服務(wù)器201執(zhí)行此操作所需的信息是從正在登記的URL獲取的。該優(yōu)選實施例還以相同方式重寫大多數(shù)絕對鏈接的URL,其中利用gc程序?qū)⒖蛻舳?125重定向到原始絕對鏈接中指定的服務(wù)器111 (i)。指紋處理版本副本223文檔的指紋是比文檔小得多的值,它是以可以比較兩個文檔的指紋來確定文檔彼 此的相似程度的方式根據(jù)文檔產(chǎn)生的。指紋與散列函數(shù)產(chǎn)生的文檔摘要不同,在于兩個摘 要的比較只能指示產(chǎn)生這些摘要的文檔是否相同。另一方面,指紋比較指示正在比較的文 檔的相似度。文檔服務(wù)器201在登記文檔時采用指紋處理代碼209制作每個登記文檔的指 紋,并將指紋存儲在指紋信息219中。稍后將詳細解釋優(yōu)選實施例中使用的指紋處理算法。比較版本副本223因為服務(wù)器201中的每個版本副本223具有一個指紋,所以可以通過將版本副本 223 (i)的指紋與版本副本223 (j)的指紋相比較來確定任意兩個版本副本223 (i)和(j)之 間的相似性。該比較通過文檔比較代碼211來執(zhí)行。在優(yōu)選實施例中,服務(wù)器201為每個版 本副本223維護該特定版本副本223與其原始URL與該特定版本副本具有相同主機名107 的版本副本223之間的指紋比較的結(jié)果列表。當Web客戶端125的用戶請求給定版本副本223的版本歷史時,服務(wù)器201不僅 返回與用戶作為輸入提供到客戶端125的登記ID 231相關(guān)聯(lián)的版本副本具有相同原始URL 233的版本副本223的鏈接列表,而且還返回至指紋比較結(jié)果列表中出現(xiàn)的版本副本223的 鏈接的列表。與鏈接一起包括的是至給定版本副本223的鏈接所指定的版本副本的相似度 的值。在其他實施例中,用戶可以僅僅提供文檔的登記ID或從用戶界面Web頁面225中的 列表中選擇至該文檔的鏈接能夠獨立于版本歷史操作來獲取相似的版本副本的列表。能夠 顯示兩個版本副本223之間的相似度具有兩個重要的優(yōu)點·當制作給定原始URL引用的版本的版本歷史時,版本相似度允許用戶進行有關(guān) 版本之間的關(guān)系的一些推測?!と绻嗤蚍浅O嗨频膬?nèi)容已經(jīng)與來自相同Web網(wǎng)站的兩個不同原始URL相關(guān) 聯(lián),則這些不同原始URL的副本223之間的相似度反映與這些原始URL相關(guān)聯(lián)的內(nèi)容實質(zhì) 是相同的。對版本副本223建索引可以采用2004年3月26日提交的、Hu等人的USSN 10/810,756、標題為具 有永久性用戶可訪問的位圖值的數(shù)據(jù)管理系統(tǒng)(A databasemanagement system with persistent,user-accessible bitmap values)中所描述的技術(shù)來制作數(shù)據(jù)庫213中的版 本副本223的內(nèi)容的位圖索引??梢詫λ邪姹靖北?23制作索引,或者可以對與給定原 始URL相關(guān)聯(lián)的版本副本223制作單獨的索引??梢允褂梅?wù)器201的方式示例服務(wù)器201具有如下特征·它可以在Web文檔所來自的Web站點不可用時提供該文檔的版本副本223?!さ怯浿谱鱓eb文檔所來自的Web站點上當前可獲取的文檔的版本的版本副本 223,并將該副本和原始URL關(guān)聯(lián)到版本編號,以便可以跟蹤該Web文檔的版本。 登記可以是自動的。·可以搜索版本副本223的原始URL。
·使版本副本223與指紋819相關(guān),這允許對版本副本進行比較。下文將解釋利用這些特征的服務(wù)器201的使用。服務(wù)器201作為共享信息的魯棒源一個公司可能具有許多內(nèi)部Web站點的內(nèi)聯(lián)網(wǎng),包括位于PC上的一些個人Web頁 面。當這些站點的其中之一工作時,其上的Web文檔當然可被獲取。在高可用性處理器和 數(shù)據(jù)庫系統(tǒng)中實現(xiàn)的服務(wù)器201可以解決該問題。可以在服務(wù)器201中自動登記一般需要 隨時可供獲取的來自內(nèi)部Web站點的Web文檔。該公司的工作人員可以使用該文檔的登記 版本URL 227來提取它。如上文所描述的,服務(wù)器201將通過如下操作響應(yīng)登記版本URL: 首先嘗試使用該文檔的原始URL233以將Web客戶端125重定向到該文檔的主Web站點,如 果失敗的話,則將提供URL 227的登記ID 231引用的版本副本223。可以將以此方式使用 的服務(wù)器201與已修改為搜索公司的內(nèi)聯(lián)網(wǎng)的搜索引擎組合。當搜索引擎索引到Web文檔 時,也將該文檔登記到服務(wù)器201,搜索引擎返回的URL列表是Web文檔的登記副本223的 URL 227 列表。服務(wù)器201作為Web文檔的版本的源目前,如果公司希望制作可通過單個URL獲取的Web文檔的歷史版本,則響應(yīng)該單 個URL產(chǎn)生的Web頁面必須是歷史版本的列表,而且該列表必須在每次新版本成為可供獲 取時被更新。利用服務(wù)器201,公司只需在服務(wù)器201中登記每個新版本;為了查看可用的 版本副本223并檢索它們中的任何一個,用戶只需利用登記版本URL227對這些版本的其中 之一使用版本跟蹤操作。服務(wù)器201作為用戶希望保留并使之可供其他人獲取的Web文檔的版本的存儲位
置目前,如果某個人發(fā)現(xiàn)他自己和其他人當前感興趣的Web文檔的版本,則感興趣 的那些人接收到稍后可能完全失效的Web文檔的URL或檢索出與當前感興趣的版本不同的 文檔版本??梢酝ㄟ^登記感興趣的Web文檔的版本并將它的登記版本URL 227提供到對登 記版本感興趣的那些人來避免這種情況。優(yōu)選實施例中的用戶界面的詳情圖3-5圖3示出第一用戶界面Web頁面225,服務(wù)器201向希望使用服務(wù)器201來登記 Web頁面、提取Web頁面或跟蹤存儲在服務(wù)器201中的特定頁面的版本的用戶返回該第一用 戶界面Web頁面225。在303處是用戶可以輸入要登記的URL、登記版本URL 227或登記ID 編號231以使服務(wù)器201提取原始文檔或副本223或跟蹤服務(wù)器201中的文檔的副本的可 寫字段。當輸入了 URL或登記ID編號時,用戶單擊字段303下的按鈕的其中之一以指定操 作。正如從標簽可看到的,當用戶單擊按鈕305時,服務(wù)器201登記字段303中的URL。當 登記該URL時,服務(wù)器301返回315所示的含有內(nèi)容的Web頁面;如圖中所示,所返回的頁 面指示已經(jīng)登記了 URL 317并由登記產(chǎn)生的登記版本URL 227。如果已登記了 URL 317,則 消息315如此指示。當字段303包含URL 227或登記ID 231時,所發(fā)生的情況取決于用戶單擊了按鈕 307-313中的哪一個?!と绻脩魡螕臬@取內(nèi)容(Get cpmtemts)按鈕307,則服務(wù)器201嘗試建立至該 文檔的原始URL所指定的服務(wù)器111 (i)的連接,并將Web客戶端125重定向到該服務(wù)器。如果嘗試失敗,則服務(wù)器201提取URL 227或登記ID 231指定的版本副本223,并將其提供 到客戶端125。服務(wù)器301能夠重定向客戶端125時出現(xiàn)的Web頁面僅僅是服務(wù)器111 (i) 上當前可獲取的版本;如果重定向失敗且服務(wù)器301提取版本副本223 (i),則所出現(xiàn)的是 圖4所示的Web頁面401。Web頁面401由重寫副本224產(chǎn)生,并且它包括說明鏈接已被重 寫并指示登記副本223 (i)的日期和時間的突出顯示的圖例403?!と绻脩魡螕簟罢埜櫵?Track it please),,按鈕309,則服務(wù)器301產(chǎn)生Web 頁面501 (圖5),其中包含URL 227或登記ID 231指定的副本223的版本列表503和與URL 227指定的副本相似的副本223的列表505。在每個列表項中,指定副本223的登記ID和 登記副本223的時間;在相似的副本的列表中,每個項還包含507所示的相似度的值。在 509,最后,頁面指示何時執(zhí)行跟蹤。單擊列表項使該項表示的版本副本223的重寫副本224 返回。 如果用戶單擊“獲取版本(Get that version) ”按鈕311,則返回的是URL 227 或登記ID 231指定的版本副本223的重寫副本224。顯示內(nèi)容與圖4所示的相同?!と绻脩魡螕簟矮@取它的原版(Get it in original) ”按鈕313,則所返回的是 URL 227或登記ID 231指定的版本副本223的原始版本222。當然該界面的許多其他版本也是可能的。在一些應(yīng)用中,并非所有這些操作都是 必需的。例如,如果服務(wù)器201僅僅要確保Web文檔的版本始終可供獲取并且自動或僅通 過系統(tǒng)管理器來登記文檔,則可能只需要獲取內(nèi)容操作。相似地,如果使用服務(wù)器201僅僅 是為了跟蹤版本并且自動或僅通過系統(tǒng)管理器登記版本,則可能僅需要跟蹤操作。在一些 實施例中,僅系統(tǒng)管理器將對原始副本224感興趣,所以用戶將只查看到重寫副本224。在 其他實施例中,界面可以提供用于其他操作的按鈕,例如獨立于版本跟蹤操作或URL搜索 操作的文檔比較操作。登記文檔表215的詳情在優(yōu)選實施例中,關(guān)系數(shù)據(jù)庫系統(tǒng)中的登記文檔表215中包含使登記ID 231與 Web頁面的原始URL 233相關(guān)的信息以及指紋處理和文檔比較所需的信息。圖6是表215 的實體關(guān)系示意圖以及它們之間的關(guān)系。圖6中的虛線框表示表與圖2所示的信息類型之 間的關(guān)系。由登記信息217開始,該信息包含在兩個表中PAGE_CACHE表601和REGISTERED_ URL表607。REGISTERED_URL表607使登記ID 231與原始URL 233相關(guān)。表607中對應(yīng)于 每個登記版本副本223有一行。行中與當前論述有關(guān)的字段是包含版本副本223的原始URL 233的REG_URL字段field 233、包含版本副本223的登記ID231且對于該行是唯一關(guān)鍵字 的REG_ID字段、以及包含表示登記版本副本223的日期和時間的數(shù)據(jù)時間戳的REGISTER_ TIME字段。PAGE_CACHE表601使登記ID 231與版本副本223相關(guān)。表601中對應(yīng)于每個登記 版本副本223有一行,因此對應(yīng)于REGISTERED_URL表607中的每一行在表601中有一行。該 行中與當前上下文有關(guān)的字段是包含版本副本的登記ID 231且對于該行是唯一關(guān)鍵字的 REG_ID 字段、C0NTENT_ENC0DING、C0NTENT_TYPE、以及 LAST_M0DIFIED,它們?nèi)堪嘘P(guān) 版本副本223的信息,并且版本副本223的兩個版本FULL_C0NTENT字段中的重寫副本224 和0RIG_C0NTENT字段中的原始版本222。REG_ID同時出現(xiàn)在PAGE_CACHE和REGISTERED_URL表中進一步使原始URL與版本副本223相關(guān)。FINGER_PRINT表609中包含指紋信息219。表609中對應(yīng)于每個登記ID 231有 一行,因此對應(yīng)于每個版本副本223有一行。該行中的相關(guān)字段是包含版本副本233的登 記ID 231且對于該行是唯一關(guān)鍵字的REG_ID字段、包含由版本副本的原始版本222制作 的指紋的FINGER_PRINT字段、以及包含來自與REG_ID字段的值指定的版本副本223相同 的Web站點且與REG_ID字段的值標識的版本副本具有實質(zhì)相似性的版本副本223的列表 的SIMILAR_PAGES字段。該列表對于每個版本副本包含版本副本的登記ID和指示該版本 副本與該行的REG_ID字段值標識的版本副本之間的相似度的值。LAST_FUZZY_MATCH_TIME 字段包含指示SIMILAR_PAGES字段中的列表被更新的最后時間的時間-日期時間戳。REFERENCED_LINK 表 617 禾Π ALL_LINK 表 613 中包含鏈接信息 221。版本副本 223 中發(fā)現(xiàn)的每個不同的鏈接由唯一的鏈接ID值標識。ALL_LINK表613中對應(yīng)于每個鏈接有 一個行。鏈接的行使鏈接ID (在LINK_ID字段中)與原始Web頁面中的絕對或相對鏈接指 定的URL所對應(yīng)的絕對URL (在LINK_URL字段中)相關(guān)。LINK_ID字段的值是該行的唯一 關(guān)鍵字。REFERENCED_LINK表617使登記ID與該登記ID指定的版本副本223中的鏈接的 鏈接ID相關(guān)。對于每個登記ID,對應(yīng)于該登記ID指定的版本副本223中的每個鏈接有一 行。REG_ID字段包含版本副本的登記ID 231,而LINK_ID字段包含REG_ID字段中的這些 鏈接的其中之一的鏈接ID。通過登記ID對REFERENCED_LINK表617的查詢將返回該登記 ID標識的版本副本223中的鏈接的鏈接ID列表,然后可以在ALL_LINK表使用這些鏈接ID 來獲取這些鏈接的URL。在優(yōu)選實施例中,使用鏈接信息221對兩個版本副本233是否足夠 相似以保證比較它們的指紋作出閾值確定。Web服務(wù)器201操作的詳情當結(jié)合圖3-5的圖形用戶界面研究圖6的表時,立即顯見對URL登記、獲取登記 URL的內(nèi)容、跟蹤版本、獲取副本223的重寫副本224和獲取副本223的原始版本222的操 作是如何執(zhí)行的。登記當在輸入用戶界面頁面301的字段303中輸入原始URL并且用戶單擊“登記 URL (Register URL) ”按鈕305時,登記代碼207獲取登記的唯一登記ID 231,在PACE_CACHE 表601中設(shè)置一個行且使其中的REG_ID字段的值是登記ID 231,然后將原始URL引用的 內(nèi)容的副本222保存在該行的0RIG_C0NTENT字段。登記代碼207還為C0NTENT_ENC0DING 和C0NTENT_TYPE字段提供來自副本222的相關(guān)值,并且使用鏈接重寫代碼205來重寫副 本222中的鏈接以產(chǎn)生副本224,然后將副本224存儲在該行的FULL_C0NTENT字段中。鏈 接重寫代碼205還根據(jù)需要在ALL_LINK表613和REFERENCED_LINK表617中設(shè)置用于鏈 接的行。然后登記代碼在REGISTERED_URL表607中為新登記標識符和原始url設(shè)置新的 行,并對該新項設(shè)置時間戳。視實施例而定,登記代碼207可以在登記時間調(diào)用指紋處理代 碼209來進行新版本副本223的原始版本222的指紋處理或在稍后執(zhí)行指紋處理。當執(zhí)行 它時,在FINGER_PRINT表609中為新版本副本223和指紋設(shè)置一個行。因為將新版本副本 223的指紋與來自相同Web站點的所有其他版本副本223的指紋進行比較需要相當多的資 源,所以通常將在稍后執(zhí)行在SIMILAR_PAGES中設(shè)置列表。自動登記基本如剛才所描述的 那樣來工作,例外的是由Web爬行器(Web crawler)來提供原始URL。
獲取內(nèi)容當用戶將登記版本URL 227或登記ID 231輸入到字段303并單擊“獲取內(nèi)容(Gwt content)”按鈕307時,服務(wù)器201執(zhí)行版本位置代碼203。使用輸入的登記ID 231或來 自輸入的登記URL 227的登記ID 231來定位REGISTERED_URL表607中對應(yīng)于該登記ID 231的行,服務(wù)器201使用REG_URL字段中的原始URL 233嘗試建立與原始URL 233指定 的服務(wù)器的連接。如果服務(wù)器201成功,則它將Web客戶端125重定向到該服務(wù)器;否則, 服務(wù)器201從PAGE_CACHE 601中該登記ID的行提取登記ID標識的版本副本的重寫副本 224。從REGISTERED_URL表607中該登記ID的行中的REGISTERJTIME字段獲取附有重寫 副本224的指示403中的日期-時間輸出。跟蹤具有特定原始URL的Web文檔的登記版本當用戶將登記版本URL 227或登記ID 231輸入到字段303并單擊“請跟蹤它 (Track it please)”按鈕309時,服務(wù)器201還執(zhí)行屬于版本位置代碼203的一部分 的代碼。該代碼的執(zhí)行使服務(wù)器201使用與登記版本URL 227中的登記ID相關(guān)聯(lián)的或 REGISTERED_URL 表 607 中的原始 URL 來定位 REGISTERED_URL 表 607 中所有其 REG_URL 字 段233具有與原始URL的值相同的值的行。當然這些行對應(yīng)于存儲在服務(wù)器201中對應(yīng)于 原始URL的Web文檔的版本。該代碼然后使服務(wù)器201使用這些行來產(chǎn)生每個行的登記版 本URL227,并使用登記版本URL 227在Web頁面501中產(chǎn)生版本503的列表。跟蹤與給定登記版本相似的Web文檔的登記版本在優(yōu)選實施例中,Web頁面501還包括與登記版本URL 227或登記ID 231指定的 登記Web文檔223相似的登記Web文檔223的列表505。在優(yōu)選實施例中,版本位置代碼 203使服務(wù)器201根據(jù)登記ID的列表和表FINGER_PRINT 609中對應(yīng)于登記ID 231的行中 的字段SIMILAR_PAGES中的相似性值來制作列表505。檢索Web文檔的特定版本副本223當用戶將登記版本URL 227或登記ID 231輸入到字段303并單擊“獲取該版本 (Get that version) ”按鈕311時,版本位置代碼203使服務(wù)器201從來自輸入的登記ID 231或來自輸入的URL 227的登記ID 231所指定的PAGE_CACHE表601的行中的字段FULL_ CONTENT中檢索重寫副本224。當用戶執(zhí)行相同操作并單擊“獲取它的原版(Get it in original) ”按鈕313時,版本位置代碼303使服務(wù)器201從該行的字段0RIG_C0NTENT檢索 原始副本222。鏈接重寫的詳情如上文所描述的,當服務(wù)器201登記Web文檔時,服務(wù)器201重寫該Web文檔中的 相對鏈接以產(chǎn)生該Web文檔的重寫副本224。服務(wù)器201執(zhí)行以進行重寫的代碼是鏈接重 寫代碼205,它采用如下方法來重寫正在登記的Web文檔中遇到的每個URL。URL rewriteUrl(URL baseURL, URL url).{1.首先,基于baseURL和url構(gòu)造absoluteURL。注意如果url不是相對URL,則 absoluteURL 將等于 url。2.其次,如果url來自HTML表單操作,例如〈form action =〃 ..." >,則返回 absoluteURL。
3.否則,構(gòu)造http //wru-server-host-and-path ? gc = l&url = absoluteURL 并返回它。注 意這里構(gòu)造的是包含原始URL 233但不包含登記ID 231的特定形式的登記版本URL 227。服務(wù)器201然后將該特定形式的URL 227寫入到重寫副本224,以替代原始鏈接中 的URL。當用戶查看重寫副本224并單擊具有重寫URL的鏈接時,服務(wù)器201接收該特定形 式的登記版本URL 227,并如上文所描述的作為標準登記版本URL 227來響應(yīng)它將Web客 戶端125重定向到特殊URL 227中所包含的絕對URL指定的Web文檔。在其他實施例中, 如果該Web文檔是不可獲取的且在服務(wù)器201中有對應(yīng)于該URL的存儲副本,則服務(wù)器201 可以提取該副本,并且在一些情況中可以提取其登記日期使之與包含該鏈接的副本最相關(guān) 的副本。實際上,在一些實施例中,服務(wù)器201可以首先嘗試提取相關(guān)的存儲副本,而不是 提取當前版本。并不使用該特定形式的URL 227來重寫HTML表單操作構(gòu)造〈form action ="url" >中的URL,因為它們往往是僅在過去是原始文檔的源的Web服務(wù)器中可獲取的 一些處理邏輯的入口點。一個示例是〈form action = “ login, jsp" >。為了解決此問題, 僅將HTML表單操作中的URL重寫為源服務(wù)器的絕對URL。重寫代碼205還使服務(wù)器201只要在它遇到或設(shè)置表613中尚不存在的絕對URL 時便向ALL_LINK表613中添加一行,以及只要在它遇到或設(shè)置表617中沒有版本副本223 的登記ID的行所對應(yīng)的絕對URL且在ALL_LINK表613中遇到該絕對URL的鏈接ID時便 在REFERENCED_LINK表617中為重寫版本224屬于的版本副本添加一行。指紋處理的詳情概述如下是用于發(fā)現(xiàn)相似版本副本223的登記URL的整個流程·使用下文解釋的算法為給定登記版本URL 227表示的副本223生成指紋 按需要在ALL_LINK表613和REFERENCED_LINK表617中設(shè)置通過鏈接重寫執(zhí)行 以產(chǎn)生重寫版本224而產(chǎn)生的絕對鏈接的行。 假設(shè)給定副本223的原始URL 233的情況下,獲取所有其原始URL 233具有與該 給定副本的原始URL的主機名和端口相同的主機名107和端口的其他副本223的登記ID 231和指紋的列表?!な褂眯问綐藴蕦υ摿斜磉M行過濾,以快速消除與該給定副本223具有無意義的 相似性的副本223。在該優(yōu)選實施例中,使用REFERENCED_LINK表617中的信息來實現(xiàn)此操作。·對于通過過濾的副本223,對指紋應(yīng)用下文定義的模糊匹配算法?!ぶ谱髦С峙c該給定副本223合理相似度的副本223的登記ID231和相似度的列表。指紋處理算法圖7和8該部分描述優(yōu)選實施例中用來根據(jù)HTML文檔產(chǎn)生指紋的技術(shù),可以將該指紋與 使用相同技術(shù)產(chǎn)生的另一個指紋比較以確定制作指紋所用的HTML文檔之間的相似度。之 所以可以比較這些指紋來確定相似度是因為它們包含HTML文檔中所含的所有結(jié)構(gòu)信息的 縮小表示以及HTML文檔的內(nèi)容的縮小表示??梢哉{(diào)整這里描述的用于對HTML文檔進行指 紋處理的技術(shù)以便在表示清楚地將文檔的結(jié)構(gòu)信息與文檔的內(nèi)容分離的任何文檔表示中使用。如圖7中707所示,HTML文檔可以視為樹。在該樹中,有兩種類型的節(jié)點節(jié)點 709,表示HTML文檔中的結(jié)構(gòu)信息;以及節(jié)點711,包含HTML文檔的實際內(nèi)容。內(nèi)容節(jié)點 711 —般包含文本。701所示的樹由701所示的簡單HTML文檔形成。如圖中703所示,結(jié) 構(gòu)信息由HTML標記提供。每個標記被包圍在尖括號中,而內(nèi)容不在其中,如圖中705所示。 標記一般成對出現(xiàn),例如<html>、</html>,其中標記對的第一個標記指示該標記所應(yīng)用的 HTML文檔部分的開始,而第二個標記指示結(jié)束。一對標記可以在它之間嵌套其他標記或標 記對。在樹707中,每個標記節(jié)點709包含來自文檔701的對應(yīng)標記,每個文本節(jié)點711包 含對應(yīng)的文本。如果指紋要用于確定HTML文檔的相似性,指紋必須捕獲由它的HTML標記定義的 文檔結(jié)構(gòu)以及它的文本或其他內(nèi)容,但是還必須實質(zhì)性地小于用于產(chǎn)生它們的HTML文檔。 在優(yōu)選實施例中使用的技術(shù)中,通過對這些標記編碼并將HTML文檔中的標記置換為它們 編碼的版本來縮減標記的大小。為了縮減指紋中內(nèi)容的大小同時保留內(nèi)容的可比性,可采 用多種技術(shù)1.使用例如MD5的消息摘要算法,由消息生成固定大小的消息摘要;2.使用例如安全散列標準的標準散列技術(shù)對內(nèi)容進行散列處理;3.將文本置換為其一部分以及或許外加整個文本的長度。前兩種技術(shù)都是公知的。有關(guān)MD5的詳情請參閱http://WWW. faqs. org/rfcs/ rfcl321.html ;有關(guān)安全散列標準的詳情請參閱 http://www. itl. nist. gov/fipspubs/ fipl80-l.htm。該優(yōu)選實施例采用第三個選擇。例如,我們可以選擇使用第一個(或中間 或最后一個)詞加文本長度。我們還可以使用第一個(中間或最后一個)非空格字符加文 本長度。第三個選擇產(chǎn)生比前兩個選擇短的文本表示,并且需要的計算也較少;其缺點是檢 測到文本中改變的概率低于采用散列或摘要的技術(shù)。在該優(yōu)選實施例中,以文本的前兩個非空格小寫字符加文本長度信息構(gòu)成的文本 特征替代文本。其他實施例可以選擇其他字符,其選擇通常取決于語言。將長度信息按58 模數(shù)化(modularize),然后將64加模數(shù)化的結(jié)果。模數(shù)化并加64為了使長度信息由可被 人可讀的ASCII字符表示。注意,64是的ASCII碼,121是“y”的ASCII碼。試探性地 選擇這兩個數(shù)字64和58,它們應(yīng)該是可調(diào)節(jié)的系統(tǒng)參數(shù)。其他實施例可以使用MD5或某個 其他散列標準來設(shè)置文本的特征。圖8示出算法805和將該算法應(yīng)用于HTML文檔701所得到的指紋819。在801所 示的是文檔701中采用的HTML標記的編碼。表801的每個行具有起始標記及其對應(yīng)的結(jié) 束標記的編碼。由此,行803給出<HTML>和</HTML>的編碼。在805所示的是,優(yōu)選實施例中采用的指紋處理算法的偽代碼。在最上層,算法具 有三個部分初始化807、指紋產(chǎn)生循環(huán)809和在817返回指紋。初始化807將指紋變量初 始化為空字符串。循環(huán)809運行直到讀取并處理了整個HTML文檔為止。在樹707中有三 種不同類型的節(jié)點用于HTML起始標記的那些節(jié)點、用于HTML結(jié)束標記的那些節(jié)點和包含 內(nèi)容的那些節(jié)點。IF語句811處理HTML起始標記它僅僅發(fā)現(xiàn)對應(yīng)于該起始標記的編碼 的表單,并將該編碼的表單置于指紋中;IF語句813對HTML結(jié)束標記執(zhí)行相同操作。內(nèi)容 節(jié)點711由IF語句815來處理,它按如上所描述來操作向指紋添加文本的前兩個非空格小寫字符,然后添加其值由文本長度來確定的第三個字符。使用來自HTML文檔701的上文算法生成了圖8所示的指紋819。821處示出編 碼的<HTML>起始標記,825處示出編碼的</HTML>結(jié)束標記,以及823處示出用于表征文 本Hello!的字符串。依據(jù)圖707的樹,算法通過處理節(jié)點709(b)并將處理結(jié)果添加到 指紋819、然后依此類推地處理節(jié)點709(d)、節(jié)點709(f)、節(jié)點711 (a)、節(jié)點709(g)、節(jié)點 709(h)、節(jié)點711(b)、節(jié)點709⑴、節(jié)點709(e)和節(jié)點709(c)來產(chǎn)生指紋819。使用指紋計算HTML文檔的相似性圖9憑直覺地,給定按剛才所描述的從兩個HTML文檔產(chǎn)生的兩個字符串指紋,指紋中 所共有的子字符串中的字符總數(shù)越大,產(chǎn)生這兩個指紋的HTML文檔的相似度越高。圖9是基于上述直覺的算法901的偽代碼。下文呈示的算法的詳情取決于指紋中 所用的HTML起始標記的表示,但是該算法可以容易地調(diào)整為由其他文檔表示構(gòu)成的指紋。 該算法取一對指紋fpl和fp2作為自變量,其中fp_不長于fp2。該算法從較短的指紋(稱 為源指紋)開始,查找第一個“〈”,它是源指紋中映射的HTML標記的定界符,從該找到的 位置開始查找最長的共有子字符串,然后移到共有子字符串之后的下一個“〈”,并重復(fù)該過 程。該算法使用需要理解的兩個函數(shù)locate_substring()和IongestSubstrO。locate_SubString()定位下一個匹配子字符串。該函數(shù)取用三個參數(shù)。第一個參 數(shù)是源指紋。第二個參數(shù)是將在源指紋中找到的子字符串。第三個參數(shù)定義源字符串中用 于匹配的起始位置。例如,IocateSubStringC' abcabc",‘‘ ab",2)將返回4。如果沒 有發(fā)現(xiàn)匹配的,則IocateSubString將返回0。IongestSubstr (fpl, fp2, delimPos)返回 fpl 中起始于位置 delimPos 且也是 fp2 中的子字符串的最長可能子字符串。例如,longestSubstr(〃 xyABCG⑶1234",〃 88890AB CGGABZGGD1234",3)將返回 “ABCGG,,。接下來詳細描述,在903,初始化步驟初始化標出源字符串中的位置的兩個變量: IastPos,它標出源指紋中將開始進行匹配的當前位置,以及delimPos,它標出當前“〈”定 界符字符在源指紋中的位置。IastPos被初始化為1,delimPos被初始化為源指紋中的第 一個“〈”。將這兩個指紋之間的相似性(similarity)初始化為O。這兩個指紋的處理在執(zhí) 行while循環(huán)905中執(zhí)行,該循環(huán)運行直到在源指紋中找不到左尖括號“〈”為止。在循環(huán) 體中,執(zhí)行的第一件事是開始查找fpl的在當前“〈”字符開始處的部分與fp2全部之間的 最長子字符串匹配(906);如果該匹配長度大于或等于6個字符,則將該匹配的長度添加到 變量similarity。將當前匹配長度或至少1添加到lastPos,并在IastPos處開始,查找下 一個“〈”字符,并重復(fù)循環(huán)905。當循環(huán)終止時,通過將變量similarity的當前值除以源指 紋的長度來計算文檔的相似性。注意IF語句906中的數(shù)字“6”是試探性選擇的。它應(yīng)該屬于可調(diào)的系統(tǒng)參數(shù)。該 參數(shù)的目的在于設(shè)置所發(fā)現(xiàn)的共有子字符串的大小的下限。憑直覺地,如果僅發(fā)現(xiàn)非常短 的子字符串的匹配,例如是HTML中的“
”的“<v”,發(fā)現(xiàn)此類匹配的事實表明產(chǎn)生指紋的 HTML文檔的相似性很小。作為對上面算法的可能改進,一旦定位了共有子字符串,就可以從 fp2移除它,由此將不再進一步對fp2測試匹配。雖然這是有點耗時。限制要執(zhí)行的指紋比較的次數(shù)圖10因為服務(wù)器201中有每個版本副本223的指紋,所以可以將任何版本副本的指紋819與任何其他版本副本223的指紋比較。當然大多數(shù)情況中,比較都將顯示沒有相似性; 但是從指紋查找要求算法901的性能,其執(zhí)行時間對于不相似的指紋來說比相似指紋慢。 這里所需要的是一種方法以在執(zhí)行指紋比較之前過濾文檔對,以便僅對具有合理概率是相 似的文檔執(zhí)行指紋比較。在優(yōu)選實施例中,使用兩種分開的技術(shù)來過濾文檔對。一種技術(shù)用于在FINGER_ PRINT表609中給定頁面的行中設(shè)置SIMILAR_PAGES列表。該列表中的頁面限于來自與給 定頁面相同Web站點的頁面。另一種技術(shù)是檢查要比較相似性的版本副本223中所含的鏈 接的不相似性。該技術(shù)基于如下觀察·相似的HTML文檔往往具有相似的鏈接數(shù)量,這些鏈接往往在兩個文檔中指向相 同的Web站點。· HTML文檔中的鏈接按遠比HTML文檔的內(nèi)容或標記變更速度慢的速度變更。根據(jù)前述內(nèi)容,如果對于由文檔服務(wù)器201正在比較的一對版本副本223可以確 定該文檔對中的這兩個文檔具有數(shù)量差異很大的鏈接或這些鏈接在這兩個文檔對中不指 向相同Web站點,則顯然該對副本223是不相似的,并且無需比較它們的指紋。當然可以將 這兩種過濾技術(shù)組合。當然立即將顯見到有關(guān)HTML文檔中的鏈接的觀察同等地適用于任 何其他文檔表示中的鏈接,以及可以將這些過濾技術(shù)與包含鏈接的任何類型的文檔一起使 用。服務(wù)器201維護有關(guān)它需要基于REFERENCED_LINK表617中的鏈接不相似性來過 濾的鏈接的信息??梢岳谜诒容^的副本223的登記ID查詢REFERENCED_LINK表617 來獲取過濾操作所需的所有信息。對副本對的每個副本223的查詢確定副本對中的每個版 本副本223的鏈接的數(shù)量。查詢還返回版本副本223中鏈接的LINK_ID值的列表,并可以 比較這些值。如果兩個列表中都出現(xiàn)相同LINK_ID值,則兩個版本副本223具有至相同URL 的鏈接。圖10示出基于鏈接不相似性的過濾的算法。正如根據(jù)前文論述所期望的,以兩個 步驟執(zhí)行該算法。第一步1001確定副本對的每個版本副本包含多少鏈接并基于此執(zhí)行過 濾。IinkNuml包含副本對中的第一副本223中的鏈接數(shù),linkNum2包含副本對中的第二副 本223中的鏈接數(shù)。應(yīng)用兩個測試1003和1005,除非副本對223通過兩個測試的其中之 一,否則過濾掉它。測試1003僅讓組合鏈接數(shù)不大于7的副本對223通過。測試1005將兩 個文檔中的鏈接數(shù)之差除以兩個文檔中的鏈接數(shù)之和+2,如果除法的結(jié)果小于1/3,則讓 該副本對通過。所用的數(shù)字7、2和0.3333也是試探性選擇的。它們可以屬于系統(tǒng)的可調(diào) 節(jié)配置參數(shù)。第一條件表明如果這兩個URL包含僅少量的引用鏈接,則應(yīng)該讓它通過。第 二條件表明如果這兩個URL的引用鏈接的數(shù)量之差在預(yù)定義的范圍內(nèi),則過濾器應(yīng)該讓它 通過。第二步1007確定兩個頁面共有的鏈接的數(shù)量。totalLinksNum是副本對223的其 中之一中的鏈接數(shù);sameLinksNum是兩個副本223中都有的鏈接的相同URL的數(shù)量。1015 處示出通過的條件。該測試中使用的數(shù)量也是試探性選擇的,它們應(yīng)該是可調(diào)節(jié)的系統(tǒng)配 置參數(shù)。該條件表明如果較之引用鏈接的總數(shù),相同鏈接的數(shù)量合理地大,則過濾器應(yīng)該讓 該副本對223通過。當一對副本同時通過測試1001和測試1007時,服務(wù)器201將比較該 副本對的指紋。
前文“具體實施方式
”為相關(guān)技術(shù)領(lǐng)域的技術(shù)人員描述了如何制作和使用本發(fā)明 的倉庫服務(wù)器,并進一步描述了發(fā)明人用于實現(xiàn)倉庫服務(wù)器的目前已知的最佳方式。對于 相關(guān)技術(shù)領(lǐng)域的技術(shù)人員來說,使用不同于本文所描述的優(yōu)選實施例來實現(xiàn)本發(fā)明是顯見 的。例如,優(yōu)選實施例在因特網(wǎng)和http協(xié)議提供的環(huán)境中工作,因此該優(yōu)選實施例的許多 細節(jié)是由環(huán)境決定的。但是有必要確保通常可經(jīng)網(wǎng)絡(luò)訪問的文檔的副本在它們不可經(jīng)網(wǎng)絡(luò) 獲取時或需要從當前可經(jīng)網(wǎng)絡(luò)訪問的那些副本獲取不同版本時可訪問的任何場合中都可 以采用本發(fā)明的原理。在優(yōu)選實施例中,使用關(guān)系數(shù)據(jù)庫系統(tǒng)中的表來維護倉庫中存儲的副本之間的必 要關(guān)系、副本的文檔URL、標識倉庫服務(wù)器中的副本的標識符、副本及其指紋、以及副本及其 相似副本的列表。這些表當然可以采取非本文所公開的形式的許多形式,此外,為能夠表示 必要關(guān)系的數(shù)據(jù)結(jié)構(gòu)以及關(guān)系表的任何安排都是有效的。本發(fā)明的給定實現(xiàn)可以不執(zhí)行優(yōu) 選實施例執(zhí)行的所有操作,或者可以執(zhí)行優(yōu)選實施例不執(zhí)行的操作。當然優(yōu)選實施例的用 戶界面由http協(xié)議的要求、優(yōu)選實施例執(zhí)行的操作以及發(fā)明人的喜好來決定,并且許多其 他用戶界面也是可能的。利用指紋,優(yōu)選實施例的許多細節(jié)作為如下事實的結(jié)果指紋設(shè)計為根據(jù)HTML文 檔制作,但是本文所描述用于制作和比較指紋的技術(shù)可以容易地調(diào)整以適應(yīng)具有結(jié)構(gòu)性組 成部分以及內(nèi)容的任何形式的文檔。就所有前文原因而言,“具體實施方式
”應(yīng)視為在各方面均是示范性的而非限定性 的,本文公開的本發(fā)明的范圍不應(yīng)由“具體實施方式
”來決定,而是由根據(jù)專利法所允許的 完整范圍解釋的權(quán)利要求來決定。
權(quán)利要求
一種可經(jīng)網(wǎng)絡(luò)訪問并對第一文檔定位符標識的文檔的存儲副本具有訪問權(quán)的倉庫服務(wù)器,所述倉庫服務(wù)器包括文檔登記器,接收文檔的第一文檔定位符并通過使用所述第一文檔定位符經(jīng)所述網(wǎng)絡(luò)從另一個服務(wù)器提取所述文檔的副本、將所述副本存儲在所述倉庫服務(wù)器可訪問的存儲器中、計算所述倉庫服務(wù)器中的所述存儲副本與其他存儲副本之間的相似性來對此響應(yīng),所述相似性將有關(guān)所述存儲副本的結(jié)構(gòu)和內(nèi)容信息都納入考慮,將所述存儲副本與相似的其他存儲副本關(guān)聯(lián),并為所述副本制作第一標識符;以及登記文檔提供器,當在所述倉庫服務(wù)器中從客戶機接收到所述第一標識符時通過提供與接收到的標識符所指定的存儲副本相關(guān)的相似存儲副本的第二標識符列表來進行響應(yīng)。
2.如權(quán)利要求1所述的倉庫服務(wù)器,其特征在于所述文檔登記器還計算相似性值,每個相似性值指示所述存儲副本與所述存儲副本相 關(guān)的其他相似存儲副本的其中之一的相似度;以及所述登記文檔提供器還對所述列表中的每個存儲副本的第二標識符附有其他存儲副 本與所述接收到的標識符所指定的存儲副本的相似性的相似性值。
3.如權(quán)利要求2所述的倉庫,其特征在于所述文檔登記器還將相似性列表與所述存儲副本相關(guān),所述列表對應(yīng)于每個其他相似 副本指示所述其他相似副本的相似性值。
4.如權(quán)利要求1所述的倉庫服務(wù)器,其特征在于所述文檔登記器通過計算所述存儲副本和所述其他存儲副本的指紋并將所述存儲副 本的指紋與所述其他存儲副本的指紋比較來計算所述存儲副本與所述其他存儲副本之間 的相似性。
5.如權(quán)利要求4所述的倉庫服務(wù)器,其特征在于所述登記器使存儲副本的指紋與所述存儲副本相關(guān)。
6.如權(quán)利要求1所述的倉庫服務(wù)器,其特征在于所述登記文檔提供器還通過提供從所述客戶端接收的所述列表中的標識符指定的存 儲副本來響應(yīng)所述標識符。
7.如權(quán)利要求6所述的倉庫服務(wù)器,其特征在于所述第二標識符是指定所述倉庫服務(wù)器中的存儲副本的第二文檔定位符。
8.如權(quán)利要求7所述的倉庫服務(wù)器,其特征在于所述第一標識符是指定所述倉庫服務(wù)器中的存儲副本的第二文檔定位符。
9.一種用于網(wǎng)絡(luò)中的倉庫服務(wù)器的文檔定位符,所述文檔定位符定位存儲在所述倉庫 服務(wù)器中的文檔的副本,并且所述副本是另一個文檔定位符制作副本時在所述網(wǎng)絡(luò)中可定 位的文檔的副本,所述文檔定位符包括用于所述網(wǎng)絡(luò)中的所述倉庫服務(wù)器的標識符;另一個文檔定位符;以及用于所述服務(wù)器中的存儲副本的標識符,所述標識符是關(guān)系表中的唯一關(guān)鍵字,并且 所述唯一關(guān)鍵字與另一個文檔定位符和存儲副本相關(guān)。
10.如權(quán)利要求9所述的文檔定位符,其特征在于僅在所述另一個文檔定位符指定的文檔在所述網(wǎng)絡(luò)中不可獲得的情況下,所述倉庫服 務(wù)器通過提供所述標識符標識的存儲副本對所述倉庫服務(wù)器中接收到的文檔定位符進行 響應(yīng)。
11.如權(quán)利要求9所述的文檔定位符,其特征在于所述倉庫服務(wù)器通過提供與所接收的文檔定位符中的另一個文檔定位符相關(guān)的其他 存儲副本的文檔定位符的列表來對接收的文檔定位符進行響應(yīng)。
12.如權(quán)利要求9所述的文檔定位符,其特征在于所述文檔定位符是統(tǒng)一資源定位符,其中主機名指定所述倉庫服務(wù)器,并且參數(shù)包括 其值是另一個文檔定位符的第一參數(shù)、其值是唯一關(guān)鍵字的第二參數(shù)、以及程序的第三參 數(shù),其中所述程序在所述倉庫服務(wù)器中執(zhí)行時,僅在另一個文檔定位符指定的文檔在網(wǎng)絡(luò) 中不可獲得的情況下,才提供唯一關(guān)鍵字標識的所述存儲副本。
全文摘要
本申請公開了用于多版本W(wǎng)eb文檔的Web服務(wù)器。一種可經(jīng)網(wǎng)絡(luò)訪問并對第一文檔定位符標識的文檔的存儲副本具有訪問權(quán)的倉庫服務(wù)器,包括文檔登記器,接收文檔的第一文檔定位符并通過使用第一文檔定位符經(jīng)網(wǎng)絡(luò)從另一個服務(wù)器提取文檔的副本、將副本存儲在倉庫服務(wù)器可訪問的存儲器中、計算倉庫服務(wù)器中的存儲副本與其他存儲副本之間的相似性來對此響應(yīng),相似性將有關(guān)存儲副本的結(jié)構(gòu)和內(nèi)容信息都納入考慮,將存儲副本與相似的其他存儲副本關(guān)聯(lián),并為副本制作第一標識符;以及登記文檔提供器,當在倉庫服務(wù)器中從客戶機接收到第一標識符時通過提供與接收到的標識符所指定的存儲副本相關(guān)的相似存儲副本的第二標識符列表來進行響應(yīng)。
文檔編號G06F17/30GK101937443SQ20101012509
公開日2011年1月5日 申請日期2005年5月4日 優(yōu)先權(quán)日2004年5月6日
發(fā)明者Z·吳 申請人:甲骨文國際有限公司