版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Web搜索引擎設(shè)計(jì)和實(shí)現(xiàn)分析----隨著Internet的飛速發(fā)展,人們?cè)絹碓揭揽烤W(wǎng)絡(luò)來查找他們所需要的信息,但是,由于網(wǎng)上的信息源多不勝數(shù),也就是我們經(jīng)常所說的"RichData,PoorInformation"。所以如何有效的去發(fā)現(xiàn)我們所需要的信息,就成了一個(gè)很關(guān)鍵的問題。為了解決這個(gè)問題,搜索引擎就隨之誕生。----現(xiàn)在在網(wǎng)上的搜索引擎也已經(jīng)有很多,比較著名的有AltaVista,Yahoo,InfoSeek,Metacrawler,SavvySearch等等。國(guó)內(nèi)也建立了很多的搜索引擎,比如:搜狐、新浪、北極星等等,當(dāng)然由于它們建立的時(shí)間不長(zhǎng),在信息搜索的取全率和取準(zhǔn)率上都有待于改進(jìn)和提高。----AltaVista是一個(gè)速度很快的搜索引擎,由于它強(qiáng)大的硬件配置,使它能夠做及其復(fù)雜的查詢。它主要是基于關(guān)鍵字進(jìn)行查詢,它漫游的領(lǐng)域有Web和Usenet。支持布爾查詢的"AND","OR"和"NOT",同時(shí)還加上最相近定位"NEAR",允許通配符和"向后"搜索(比如:你可以查找鏈接到某一頁(yè)的所有Web站點(diǎn))。你可以決定是否對(duì)搜索的短語(yǔ)加上權(quán)值,在文檔的什么部位去查找它們。能夠進(jìn)行短語(yǔ)查詢而不是簡(jiǎn)單的單詞查詢的優(yōu)點(diǎn)是很明顯的,比如,我們想要查找一個(gè)短語(yǔ)"tobeornottobe",如果只是把它們分解成單詞的話,這些單詞都是屬于StopWord,這樣這個(gè)查詢就不會(huì)有任何結(jié)果,但是把它當(dāng)作一個(gè)整體來查詢,就很容易返回一些結(jié)果,比如關(guān)于哈姆雷特或者是莎士比亞等等的信息。系統(tǒng)對(duì)查詢結(jié)果所得到的網(wǎng)頁(yè)的打分是根據(jù)在網(wǎng)頁(yè)中所包含的你的搜索短語(yǔ)的多少,它們?cè)谖臋n的什么位置以及搜索短語(yǔ)在文檔內(nèi)部之間的距離來決定的。同時(shí)可以把得到的搜索結(jié)果翻譯成其他的語(yǔ)言。----Exite是稱為具有"智能"的搜索引擎,因?yàn)樗⒘艘粋€(gè)基于概念的索引。當(dāng)然它所謂的"智能"是基于對(duì)概率統(tǒng)計(jì)的靈活應(yīng)用。它能夠同時(shí)進(jìn)行基于概念和關(guān)鍵字的索引。它能夠索引Web,Usenet和分類的廣告。支持"AND","OR","NOT"等布爾操作,同時(shí)也可以使用符號(hào)"+"和"-"。缺點(diǎn)是在返回的查詢結(jié)果中沒有指定網(wǎng)頁(yè)的尺寸和格式。----InfoSeek是一個(gè)簡(jiǎn)單但是功能強(qiáng)大的索引,它的一個(gè)優(yōu)點(diǎn)是有一個(gè)面向主題搜索的可擴(kuò)展的分類。你可以把你的搜索短語(yǔ)和相似的分類目錄的主題短語(yǔ)相互參照,而那些主題短語(yǔ)會(huì)自動(dòng)加到你的查詢中去。使你的搜索有更好的主題相關(guān)性。同時(shí)它也支持對(duì)圖象的查詢。它能夠漫游Web,Usenet,UsenetFAQs等等。不支持布爾操作,但是可以使用符號(hào)"+"和"-"(相當(dāng)于"AND"和"NOT")----Yahoo實(shí)際上不能稱為是一個(gè)搜索引擎站點(diǎn),但是它提供了一個(gè)分層的主題索引,使你能夠從一個(gè)通常的主題進(jìn)入到一個(gè)特定的主題,Yahoo對(duì)Web進(jìn)行了有效的組織和分類。比如你想要建立一個(gè)網(wǎng)頁(yè),但是你不知道如何操作,為了在Yahoo上找到關(guān)于建立網(wǎng)頁(yè)的信息,你可以先在Yahoo上選擇一個(gè)主題:計(jì)算機(jī)和Internet,然后在這個(gè)主題下,你可以發(fā)現(xiàn)一些子主題,比如:Web網(wǎng)頁(yè)制作,CGI編程,JAVA,HTML,網(wǎng)頁(yè)設(shè)計(jì)等,選擇一個(gè)和你要找的相關(guān)的子主題,最終你就可以得到和該子主題相關(guān)的所有的網(wǎng)頁(yè)的鏈接。也就是說,如果你對(duì)要查找的內(nèi)容屬于哪個(gè)主題十分清楚的話,通過目錄查詢的方法要比一般的使用搜索引擎有更好的準(zhǔn)確率。你可以搜索Yahoo的索引,但是事實(shí)上,你并沒有在搜索整個(gè)Web。但是Yahoo提供了選項(xiàng)使你可以同時(shí)搜索其他的搜索引擎,比如:AltaVista。但是要注意的是Yahoo實(shí)際上只是對(duì)Web的一小部分進(jìn)行了分類和組織,而且它的實(shí)效性也不是很好。----搜索引擎的基本原理是通過網(wǎng)絡(luò)機(jī)器人定期在web網(wǎng)頁(yè)上爬行,然后發(fā)現(xiàn)新的網(wǎng)頁(yè),把它們?nèi)』貋矸诺奖镜氐臄?shù)據(jù)庫(kù)中,用戶的查詢請(qǐng)求可以通過查詢本地的數(shù)據(jù)庫(kù)來得到。如yahoo每天會(huì)找到大約500萬(wàn)個(gè)新的網(wǎng)頁(yè)。----搜索引擎的實(shí)現(xiàn)機(jī)制一般有兩種,一種是通過手工方式對(duì)網(wǎng)頁(yè)進(jìn)行索引,比如yahoo的網(wǎng)頁(yè)是通過手工分類的方式實(shí)現(xiàn)的,它的缺點(diǎn)是Web的覆蓋率比較低,同時(shí)不能保證最新的信息。查詢匹配是通過用戶寫入的關(guān)鍵字和網(wǎng)頁(yè)的描述和標(biāo)題來進(jìn)行匹配,而不是通過全文的匹配進(jìn)行的。第二種是對(duì)網(wǎng)頁(yè)進(jìn)行自動(dòng)的索引,象AltaVista則是完全通過自動(dòng)索引實(shí)現(xiàn)的。這種能實(shí)現(xiàn)自動(dòng)的文檔分類,實(shí)際上采用了信息提取的技術(shù)。但是在分類準(zhǔn)確性上可能不如手工分類。----搜索引擎一般都有一個(gè)Robot定期的訪問一些站點(diǎn),來檢查這些站點(diǎn)的變化,同時(shí)查找新的站點(diǎn)。一般站點(diǎn)有一個(gè)robot.txt文件用來說明服務(wù)器不希望Robot訪問的區(qū)域,Robot都必須遵守這個(gè)規(guī)定。如果是自動(dòng)索引的話,Robot在得到頁(yè)面以后,需要對(duì)該頁(yè)面根據(jù)其內(nèi)容進(jìn)行索引,根據(jù)它的關(guān)鍵字的情況把它歸到某一類中。頁(yè)面的信息是通過元數(shù)據(jù)的形式保存的,典型的元數(shù)據(jù)包括標(biāo)題、IP地址、一個(gè)該頁(yè)面的簡(jiǎn)要的介紹,關(guān)鍵字或者是索引短語(yǔ)、文件的大小和最后的更新的日期。盡管元數(shù)據(jù)有一定的標(biāo)準(zhǔn),但是很多站點(diǎn)都采用自己的模板。文檔提取機(jī)制和索引策略對(duì)Web搜索引擎的有效性有很大的關(guān)系。高級(jí)的搜索選項(xiàng)一般包括:布爾方法或者是短語(yǔ)匹配和自然語(yǔ)言處理。一個(gè)查詢所產(chǎn)生的結(jié)果按照提取機(jī)制被分成不同的等級(jí)提交給用戶。最相關(guān)的放在最前面。每一個(gè)提取出來的文檔的元數(shù)據(jù)被顯示給用戶。同時(shí)包括該文檔所在的URL地址。----另外有一些關(guān)于某一個(gè)主題的專門的引擎,它們只對(duì)某一個(gè)主題的內(nèi)容進(jìn)行搜索和處理,這樣信息的取全率和精度相對(duì)就比較高。----同時(shí),有一類搜索引擎,它本身不用Robot去定期的采集網(wǎng)頁(yè)。象SavvySearch和MetaCrawler是通過向多個(gè)搜索引擎同時(shí)發(fā)出詢問并對(duì)結(jié)果進(jìn)行綜合返回給用戶實(shí)現(xiàn)搜索功能。當(dāng)然實(shí)際上象SavvySearch能夠?qū)Ω鱾€(gè)搜索引擎的功能進(jìn)行分析和比較,根據(jù)不同的用戶查詢提交給不同的搜索引擎進(jìn)行處理,當(dāng)然用戶自己也可以指定利用哪一個(gè)搜索引擎。----一個(gè)優(yōu)秀的搜索引擎必須處理以下幾個(gè)問題:1網(wǎng)頁(yè)的分類2自然語(yǔ)言的處理3搜索策略的調(diào)度和協(xié)作4面向特定用戶的搜索。所以很多搜索引擎不同程度的使用了一些人工智能的技術(shù)來解決這些方面的問題。----二、網(wǎng)絡(luò)Spider的實(shí)現(xiàn)描述----現(xiàn)在有很多文章對(duì)Web引擎做了大量的介紹和分析,但是很少有對(duì)它們的實(shí)現(xiàn)做一個(gè)詳細(xì)的描述,這里我們主要來介紹一個(gè)具有基本功能的Web引擎的實(shí)現(xiàn)。本文,我們以類C++語(yǔ)言的形式來描述Web引擎如何采集網(wǎng)頁(yè)并存放到數(shù)據(jù)庫(kù)中的過程。同時(shí)描述了如何根據(jù)用戶輸入的關(guān)鍵字查詢數(shù)據(jù)庫(kù)并得到相關(guān)網(wǎng)頁(yè)的過程。----2.1數(shù)據(jù)庫(kù)結(jié)構(gòu)----首先,我們要建立一個(gè)數(shù)據(jù)庫(kù)表用來存放我們得到的網(wǎng)頁(yè)。這里一般需要建立如下的表:----1.字典表的建立,事實(shí)上這里是用文檔中有意義的單詞和它們的出現(xiàn)頻率來代表一個(gè)文檔。----該表(WordDictionaryTbl)主要要包括三個(gè)字段,主要是用來存放和一個(gè)網(wǎng)頁(yè)相關(guān)的單詞的情況url_id對(duì)每一個(gè)URL的唯一的ID號(hào)word該URL中的經(jīng)過stem的單詞intag該單詞在該網(wǎng)頁(yè)中的出現(xiàn)的次數(shù)----2.存儲(chǔ)每一個(gè)URL信息的表----該表(URLTbl)中主要的關(guān)鍵字段有:rec_id每一條記錄的唯一的ID號(hào)status得到該URL內(nèi)容的狀態(tài),比如HTTP_STATUS_TIMEOUT表示下載網(wǎng)頁(yè)的最大允許超時(shí)urlURL的字符串名稱content_type內(nèi)容的類型last_modified最新的更改時(shí)間title該URL的標(biāo)題docsize該URL的文件的尺寸last_index_time最近一次索引的時(shí)間next_index_time下一次索引的時(shí)間tag對(duì)于網(wǎng)頁(yè),用來表示它的類型,比如:是text,或者是html,或者是圖片等等hops得到文件時(shí)候的曾經(jīng)失敗的次數(shù)keywords對(duì)于網(wǎng)頁(yè),和該網(wǎng)頁(yè)相關(guān)的關(guān)鍵字description對(duì)于網(wǎng)頁(yè),指網(wǎng)頁(yè)的內(nèi)容的描述lang文檔所使用的語(yǔ)言----3.因?yàn)榫W(wǎng)頁(yè)中有很多單詞是一些介詞和語(yǔ)氣助詞或者是非常常用的常用詞,它們本身沒有多少意義。比如:英語(yǔ)中的about,in,at,we,this等等。中文中的如"和","一起","關(guān)于"等等。我們統(tǒng)一的把它們稱為停止詞(stopword)。所以我們要建立一個(gè)表,來包括所有這些停止詞。該表(StopWordTbl)主要有兩個(gè)字段。wordchar(32)表示那些停止詞langchar(2)表示所使用的語(yǔ)言----4.我們要建立一個(gè)關(guān)于robot的表,我們?cè)谇懊嬲f過,所有的網(wǎng)站一般都有一個(gè)robot.txt文件用來表示網(wǎng)絡(luò)上的robot可以訪問的權(quán)限。該表(RobotTbl)主要有以下字段。hostinfoWeb站點(diǎn)主機(jī)的信息path不允許robot訪問的目錄----5.建立我們需要屏蔽的那些網(wǎng)頁(yè)(比如一些內(nèi)容不健康的或者沒有必要去搜索的站點(diǎn))的一張表(ForbiddenWWWTbl),主要的字段就是網(wǎng)頁(yè)的URL。----6.另外我們需要建立一個(gè)我們所要得到的文件類型的表(FileTypeTbl),比如,對(duì)于一個(gè)簡(jiǎn)單的Web搜索引擎,我們可能只需要得到后綴為.html,htm,.shtml和txt的類型文件。其他的我們只是簡(jiǎn)單的忽略它們。主要的字段就是文件的類型和說明。----其中關(guān)于停止詞的表的內(nèi)容是我們要實(shí)現(xiàn)要根據(jù)各種語(yǔ)言的統(tǒng)計(jì)結(jié)果,把那些意義不大的單詞放進(jìn)去。關(guān)于文檔單詞、URL和Robot的表的內(nèi)容都是在獲取Web網(wǎng)頁(yè)的時(shí)候動(dòng)態(tài)增加記錄的。----2.2具體網(wǎng)頁(yè)獲取算法描述----具體的網(wǎng)頁(yè)的獲取步驟是這樣的:----我們可以設(shè)定我們的搜索程序最大可以開的線程的數(shù)目,然后這些線程可以同時(shí)在網(wǎng)上進(jìn)行搜索,它們根據(jù)數(shù)據(jù)庫(kù)中已有的關(guān)于網(wǎng)頁(yè)的信息,找出那些需要更新的網(wǎng)頁(yè)(如何判斷哪些網(wǎng)頁(yè)需要更新是一個(gè)值得研究的過程,現(xiàn)在有很多啟發(fā)式和智能的算法,基本上是基于統(tǒng)計(jì)規(guī)律進(jìn)行建模。最簡(jiǎn)單的當(dāng)然是設(shè)定一個(gè)時(shí)間范圍,在某個(gè)時(shí)間范圍以前的網(wǎng)頁(yè)被重新去搜索一遍),然后判斷那些網(wǎng)頁(yè)是否在屏蔽表中,如果是的話,就從關(guān)于URL的表中刪除該條記錄。否則,我們就到相應(yīng)的WWW站點(diǎn)去得到URL指定的文件(這里需要注意的是根據(jù)不同的URL的特點(diǎn),需要使用不同的協(xié)議,比如對(duì)于FTP站點(diǎn)要采用FTP協(xié)議,對(duì)于HTTP站點(diǎn)要采用HTTP協(xié)議,新聞?wù)军c(diǎn)要采用NNTP協(xié)議等等)事實(shí)上,我們先得到關(guān)于該網(wǎng)頁(yè)的頭信息,如果該網(wǎng)頁(yè)的最新修改時(shí)間和我們最近提取的時(shí)間是一樣的話,表示該網(wǎng)頁(yè)內(nèi)容沒有任何更新,則我們就不必去得到它的內(nèi)容,只需要修改最近一次更新它的時(shí)間為當(dāng)前的時(shí)間就可以了。如果該網(wǎng)頁(yè)最近做了修改,我們就要得到該網(wǎng)頁(yè),并對(duì)它的內(nèi)容進(jìn)行分析,主要要包括和它相關(guān)的鏈接,把它們加到相應(yīng)的數(shù)據(jù)庫(kù)中,同時(shí)判斷網(wǎng)頁(yè)所包含的各種其他的文件,如文本文件、圖形文件、聲音文件和其他多媒體文件是否是我們所需要的文件,如果是的話,就把它加到我們響應(yīng)的數(shù)據(jù)庫(kù)中。同時(shí)要根據(jù)網(wǎng)頁(yè)的內(nèi)容提取所有的有意義的單詞和它們的出現(xiàn)的次數(shù),放到相應(yīng)的數(shù)據(jù)庫(kù)中。為了更好的描述這個(gè)過程,我們來看跟這個(gè)過程相關(guān)的主要的幾個(gè)對(duì)象和數(shù)據(jù)結(jié)構(gòu)。對(duì)象主要是針對(duì)三個(gè)層次來講的。第一層是針對(duì)WWW服務(wù)器,第二層是針對(duì)每一個(gè)頁(yè)面,第三層是針對(duì)每一個(gè)頁(yè)面的全文的索引。----2.3和實(shí)現(xiàn)相關(guān)的主要類對(duì)象和功能描述下面的結(jié)構(gòu)是針對(duì)一個(gè)站點(diǎn)來說的。ClassCServer{主要的屬性有:char*url;//WWW站點(diǎn)的URL名稱char*proxy;//使用的代理的名稱char*basic_auth;//進(jìn)行基本的HTTP認(rèn)證intproxy_port;//代理的端口號(hào)intperiod;//再次索引的周期intnet_errors;//網(wǎng)絡(luò)連接不通的次數(shù)intmax_net_errors;//可以允許的最大的網(wǎng)絡(luò)錯(cuò)誤intread_timeout;//下載文件允許的最大的延遲intmaxhops;//表示URL可以最大跳轉(zhuǎn)的深度intuserobots;//是否遵守robot.txt中的約定intbodyweight;//在<body>....</body>之間的單詞的權(quán)重inttitleweight;//在<title>....</title>之間的單詞的權(quán)重inturlweight;//在文檔的URL中的單詞的權(quán)重intdescweight;//在<METANAME="Description"Content="...">之間單詞的權(quán)重intkeywordweight;//在<METANAME="Keywords"Content="...">之間的單詞的權(quán)重----主要方法有:FindServer();//用來查找該服務(wù)器是否存在并可以連接FillDefaultAttribute()//用來針對(duì)所有的WWW服務(wù)器填寫默認(rèn)的屬};以上的對(duì)象中的成員變量是和一個(gè)站點(diǎn)相關(guān)的參數(shù)的設(shè)置,我們對(duì)所有的站點(diǎn)有一個(gè)默認(rèn)的設(shè)置,但是可以對(duì)某些站點(diǎn)做一些特殊的設(shè)置。這些設(shè)置可以在配置文件中設(shè)定。----下面是關(guān)于文檔的結(jié)構(gòu)的主要的數(shù)據(jù)成員:ClassCNetDocument主要屬性有:inturl_id;//該URL的ID號(hào)intstatus;//獲取該文檔時(shí)候的狀態(tài)intsize;//文檔的尺寸inttag;//和該文檔相關(guān)的標(biāo)簽,表示該文檔是HTML,TEXT或者是其他類型inthops;//URL跳轉(zhuǎn)的次數(shù)char*url;//和該文檔相關(guān)的URL的名稱char*content_type;//該內(nèi)容的類型char*last_modified;//最近一次的更新時(shí)間char*title;//該文檔的標(biāo)題char*last_index_time;//上次索引的時(shí)間char*next_index_time;//下次索引的時(shí)間char*keywords;//該文檔中的關(guān)鍵字char*description;//該文檔的描述主要方法有:FillDocInfo(…)//根據(jù)數(shù)據(jù)庫(kù),得到該文檔相關(guān)信息AddHerf(…)//加入網(wǎng)頁(yè)中存在的新的鏈接的網(wǎng)址DeleteURL(…)//刪除一個(gè)存在的網(wǎng)址CanGetThisURL(…)//根據(jù)配置決定是否去得到該網(wǎng)頁(yè)//下面三個(gè)方法是根據(jù)不同的URL,用不同的協(xié)議去獲得文檔NNTPGet(…)FTPGet(….)HTTPGet(….)ParseHead(…)//如果是HTTP協(xié)議得到的話,分析頭信息ParseMainBody(…)//對(duì)獲得的文檔的主體進(jìn)行分析ServerResponseType(….)//得到服務(wù)器端的響應(yīng)消息UpdateURLDB(….)//更新的數(shù)據(jù)入庫(kù)};----事實(shí)上,我們?cè)谝崛∫粋€(gè)網(wǎng)頁(yè)的時(shí)候,都要建立一個(gè)CNetDocument對(duì)象,然后再對(duì)這個(gè)網(wǎng)頁(yè)進(jìn)行分析的時(shí)候,把相關(guān)的內(nèi)容放到這個(gè)CNetDocument的成員變量里面。下面是關(guān)于頁(yè)面全文索引的結(jié)構(gòu)的主要數(shù)據(jù)成員:ClassCIndexer{主要屬性有:char*url;//我們要處理的文檔相關(guān)的URL的名稱intmwords;//我們事先設(shè)定的一個(gè)網(wǎng)頁(yè)的最大的單詞數(shù)目intnwords;//實(shí)際的得到的單詞的數(shù)目intswords;//我們已經(jīng)排序的單詞的數(shù)目WORD*Word;//所有單詞的內(nèi)容char*buf;//我們?yōu)槲臋n所分配的空間主要方法有:InitIndexer(…)//進(jìn)行初始設(shè)置和分配ParseGetFile(…)//對(duì)得到的網(wǎng)頁(yè)進(jìn)行全文索引AddWord(…)//把網(wǎng)頁(yè)的可以索引的單詞加到Word數(shù)組中去InToDB(….)//關(guān)于網(wǎng)頁(yè)全文索引的信息入庫(kù)};----進(jìn)行網(wǎng)頁(yè)提取前,我們要建立一個(gè)CIndexer對(duì)象,它主要是用來對(duì)網(wǎng)頁(yè)進(jìn)行全文的索引。一般來說我們只對(duì)兩種類型的URL進(jìn)行全文索引,一個(gè)是text/html,另外一個(gè)是text/plain。其中WORD的數(shù)據(jù)結(jié)構(gòu)如下:typedefstructword_struct{intcount;//該單詞出現(xiàn)的次數(shù)intcode;//該單詞的正常的形式,比如單詞可能為encouraging,它的正常的形式應(yīng)該為encourage,這其實(shí)是一種對(duì)單詞的stem。即我們只取單詞的主干部分。char*word;//該單詞的內(nèi)容}WORD;----以下的結(jié)構(gòu)是和網(wǎng)頁(yè)中的一些鏈接的對(duì)象相關(guān)的一個(gè)數(shù)據(jù)結(jié)構(gòu)typedefstructhref_struct{char*href;//該鏈接的名稱inthops;//發(fā)生的跳轉(zhuǎn)次數(shù)intstored;//是否已經(jīng)存儲(chǔ)到數(shù)據(jù)庫(kù)中}HREF;----所有需要更新的和新產(chǎn)生的URL都被放到這個(gè)結(jié)構(gòu)中,當(dāng)它的數(shù)量超過一定的范圍以后,被一次性的存入數(shù)據(jù)庫(kù)。----關(guān)于URL的一個(gè)數(shù)據(jù)結(jié)構(gòu)如下:typedefstructurl{char*schema;//表示該URL是通過什么協(xié)議得到的,比如HTTP,F(xiàn)TP,NNTP等。char*specific;//主機(jī)的名稱加上路徑char*hostinfo;//主機(jī)的名稱加上相關(guān)的協(xié)議端口char*hostname;//主機(jī)的名稱char*path;//在主機(jī)的具體的路徑char*filename;//文件的名稱char*anchor;//相關(guān)的anchorintport;//協(xié)議相關(guān)的端口}URL;----這是針對(duì)URL的一些相關(guān)的屬性的描述的一個(gè)數(shù)據(jù)結(jié)構(gòu)。事實(shí)上在數(shù)據(jù)庫(kù)中,我們存儲(chǔ)的只是對(duì)網(wǎng)頁(yè)的描述和對(duì)一些文本和HTML頁(yè)面的關(guān)鍵詞的索引信息。我們并不存儲(chǔ)網(wǎng)頁(yè)的實(shí)際的內(nèi)容。----三、用戶查詢實(shí)現(xiàn)描述----關(guān)于對(duì)用戶提交的查詢請(qǐng)求的實(shí)現(xiàn)分析:----用戶想要查詢某一方面的信息一般都是通過提供和該領(lǐng)域相關(guān)的幾個(gè)關(guān)鍵字來進(jìn)行的。----我們來看一下關(guān)于用戶查詢的相關(guān)的數(shù)據(jù)結(jié)構(gòu)和類:----下面是一個(gè)關(guān)于單詞和它的權(quán)值的基本結(jié)構(gòu):typedefstructword_weight_pair{charword[WORD_LEN];intweight;}word_weight_pair;----下面的類主要是用來對(duì)用戶的查詢進(jìn)行處理和分析:ClassCUserQuery{charm_UserQuery[MAX_QUERYLEN];//用戶的查詢表達(dá)式CPtrArrayword_weight_col;//是關(guān)于結(jié)構(gòu)word_weight_pair的動(dòng)態(tài)數(shù)組intm_maxReturnSum;//用戶希望返回的最多的網(wǎng)頁(yè)數(shù)intsearch_mode;CObArraym_returnDoc;//是關(guān)于CNetDocument對(duì)象的一個(gè)動(dòng)態(tài)數(shù)組NormalizeWord(char*OneWord);//對(duì)單詞進(jìn)行歸整化,即Stem.Find(char*odbcName);//進(jìn)行數(shù)據(jù)庫(kù)查找和匹配};----系統(tǒng)實(shí)現(xiàn)的基本的步驟如下:----1.對(duì)用戶輸入的查詢表達(dá)式進(jìn)行分析。事實(shí)上,我們?cè)谇懊娴腟pider搜索過程中對(duì)文檔的表示是通過關(guān)鍵字形式描述的,每一個(gè)文檔可以表示為這樣的一個(gè)集合其中::=<單詞或短語(yǔ)名稱><單詞或短語(yǔ)的權(quán)值>----實(shí)際上就是采用矢量空間的表示方法來表示的文檔。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房買賣合同的監(jiān)管要點(diǎn)3篇
- 土地出租合同簡(jiǎn)單范本3篇
- 變更補(bǔ)充合同范例
- 傳媒公司項(xiàng)目合同范例
- 木門訂購(gòu)合同范例乙方
- 勞動(dòng)集體合同范例
- 脫硫土建合同范例
- 救護(hù)車采購(gòu)合同范例
- 施工機(jī)械購(gòu)買合同范例
- 承接工程土方合同范例
- 高中高一級(jí)部拔河比賽活動(dòng)實(shí)施方案
- 每日食品安全檢查記錄
- 航空機(jī)務(wù)專業(yè)職業(yè)生涯規(guī)劃書
- 八年級(jí)英語(yǔ)上學(xué)期期末考試(深圳卷)-2023-2024學(xué)年八年級(jí)英語(yǔ)上冊(cè)單元重難點(diǎn)易錯(cuò)題精練(牛津深圳版)
- 項(xiàng)目成本節(jié)約措施總結(jié)報(bào)告
- 高中化學(xué)課件:水溶液中離子平衡圖像分析
- 迎元旦趣味活動(dòng)及知識(shí)競(jìng)賽試題及答案
- SH/T 3543-2007 石油化工建設(shè)工程項(xiàng)目施工過程技術(shù)文件規(guī)定
- 減鹽控油控制體重規(guī)章制度
- 建筑之歌課件PPT
- (完整版)員工流失文獻(xiàn)綜述
評(píng)論
0/150
提交評(píng)論