搜索引擎語義排序的設計與實現(xiàn)論文_第1頁
搜索引擎語義排序的設計與實現(xiàn)論文_第2頁
搜索引擎語義排序的設計與實現(xiàn)論文_第3頁
搜索引擎語義排序的設計與實現(xiàn)論文_第4頁
搜索引擎語義排序的設計與實現(xiàn)論文_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第頁共43頁隨著互聯(lián)網(wǎng)的不斷發(fā)展和日益普及,信息技術的不斷發(fā)展,網(wǎng)上的信息量在爆炸性增長,網(wǎng)絡已經(jīng)深入到了人們生活的各個方面,影響并改變了人們生活方式和思維方式。中國互聯(lián)網(wǎng)絡信息中心(CNNIC)在京發(fā)布第33次《中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》。《報告》顯示,截至2013年12月,中國網(wǎng)民規(guī)模達6.18億,互聯(lián)網(wǎng)普及率為45.8%,網(wǎng)站數(shù)達320萬,域名數(shù)目已達1844萬,全球Web頁面的數(shù)目已經(jīng)超過200億,中國的網(wǎng)頁數(shù)估計也超過了40億。在如此浩瀚的海洋里尋找信息,就像“大海撈針”一樣,急切需要一種工具使我們可以迅速找到我們想要的內容,這就是搜索引擎發(fā)展的巨大市場和動力。著名的因特網(wǎng)搜索引擎包括Baidu、Google、Sohu等。搜索引擎指自動從因特網(wǎng)搜集信息,經(jīng)過一定整理以后,提供給用戶進行查詢的系統(tǒng)。因特網(wǎng)上的信息浩瀚萬千,而且毫無秩序,所有的信息像汪洋上的一個個小島,網(wǎng)頁鏈接是這些小島之間縱橫交錯的橋梁,而搜索引擎,則為用戶繪制一幅一目了然的信息地圖,供用戶隨時查閱。它包括信息搜集、信息整理和用戶查詢三部分?!帮w夢”搜索引擎系統(tǒng)通過Hertix實現(xiàn)了自動將Web上的海量網(wǎng)頁抓取到本地。然后解析網(wǎng)頁,提取其中的有用內容,為網(wǎng)頁建立本體詞庫,對解析網(wǎng)頁生成的信息文件進行分詞,并建立索引,將索引存入數(shù)據(jù)庫中。通過語義排序實現(xiàn)將索引按照一定的排序規(guī)則排序,并將排好序的的結果存于緩存,以供用戶查詢?!帮w夢”搜索引擎系統(tǒng)為用戶提供了簡潔的查詢頁面,用戶通過此界面完成與系統(tǒng)的交互。當用戶在查詢界面上輸入要檢索的信息后,系統(tǒng)將在可以接受的時間內,返回用戶所需的結果集。本系統(tǒng)實現(xiàn)了搜索引擎的基本功能,能夠使用戶可以簡單,快捷,精確的對感興趣的東西進行檢索。2課題背景2.1搜索引擎的概念由于網(wǎng)絡信息的飛速增長,我們不得不面對浩瀚的網(wǎng)絡資源,這極大地改變了人們獲取信息的方式,面對浩如煙海的網(wǎng)絡信息,如何才能迅速、方便地獲取有效信息,日益成為人們關心的問題,搜索引擎的出現(xiàn)極大地緩解了這一矛盾。它為所有網(wǎng)上沖浪的用戶提供了一個入口,毫不夸張的說,所有的用戶都可以從搜索出發(fā)到達自己想去的網(wǎng)上任何一個地方。因此它也成為除了電子郵件以外最多人使用的網(wǎng)上服務。搜索引擎是一種應用在Web上的,為用戶提供檢索服務的軟件系統(tǒng),它以一定的策略在Web上搜集和發(fā)現(xiàn)信息,并對信息進行分析、提取、組織等處理后形成供檢索用的數(shù)據(jù)庫。從使用者的角度看,這種軟件系統(tǒng)提供一個網(wǎng)頁界面,讓他通過瀏覽器提交一個詞語或者短語,搜索引擎會在數(shù)據(jù)庫中進行搜尋,如果找到與用戶要求內容相符的網(wǎng)站,便采用特殊的算法——通常根據(jù)網(wǎng)頁中關鍵詞的匹配程度,出現(xiàn)的位置/頻次,鏈接質量等——計算出各網(wǎng)頁的相關度及排名等級,然后根據(jù)關聯(lián)度高低,按順序將這些網(wǎng)頁鏈接返回給用戶。這個與用戶輸入內容相關的信息列表(常常會是很長一個列表,例如包含1萬個條目)。這個列表中的每一條目代表一篇網(wǎng)頁,至少有3個元素:(1)標題:以某種方式得到的網(wǎng)頁內容的標題。最簡單的方式就是從網(wǎng)頁的<TITLE></TITLE>標簽中提取的內容。(盡管在一些情況下并不真正反映網(wǎng)頁的內容)。(2)URL:該網(wǎng)頁對應的“訪問地址”。有經(jīng)驗的Web用戶常??梢酝ㄟ^這個元素對網(wǎng)頁內容的權威性進行判斷,例如上面的內容通常就比(某個假想的個人網(wǎng)站)上的要更權威些(不排除后者上的內容更有趣些)。(3)摘要:以某種方式得到的網(wǎng)頁內容的摘要。最簡單的一種方式就是將網(wǎng)頁內容的頭若干字節(jié)(例如512)截取下來作為摘要。通過瀏覽這些元素,用戶對相應的網(wǎng)頁是否真正包含他所需的信息進行判斷。比較肯定的話則可以點擊上述URL,從而得到該網(wǎng)頁的全文。搜索引擎提供信息查詢服務的時候,它面對的只是查詢詞。而有不同背景的人可能提交相同的查詢詞,關心的是和這個查詢詞相關的不同方面的信息,但搜索引擎通常是不知道用戶背景的,因此搜索引擎既要爭取不漏掉任何相關的信息,還要爭取將那些“最可能被關心”的信息排在列表的前面。這也就是對搜索引擎的根本要求。除此以外,考慮到搜索引擎的應用環(huán)境是Web,因此對大量并發(fā)用戶查詢的響應性能也是一個不能忽略的重要性能指標。2.2搜索引擎的發(fā)展歷史2.2.1搜索引擎的起源所有搜索引擎的祖先,是1990年由Montreal的McGillUniversity三名學生(AlanEmtage、PeterDeutsch、BillWheelan)發(fā)明的Archie(ArchieFAQ)。AlanEmtage等想到了開發(fā)一個可以用文件名查找文件的系統(tǒng),于是便有了Archie。Archie是第一個自動索引互聯(lián)網(wǎng)上匿名FTP網(wǎng)站文件的程序,但它還不是真正的搜索引擎。Archie是一個可搜索的FTP文件名列表,用戶必須輸入精確的文件名搜索,然后Archie會告訴用戶哪一個FTP地址可以下載該文件。世界上第一個Spider程序,是MITMatthewGray的WorldwideWebWanderer,用于追蹤互聯(lián)網(wǎng)發(fā)展規(guī)模。剛開始它只用來統(tǒng)計互聯(lián)網(wǎng)上的服務器數(shù)量,后來則發(fā)展為也能夠捕獲網(wǎng)址(URL)2.2.2第一代搜索引擎第一代搜索引擎出現(xiàn)于1994年。這類搜索引擎一般都索引少于1,000,000個網(wǎng)頁,極少重新搜集網(wǎng)頁并去刷新索引。而且其檢索速度非常慢,一般都要等待10秒甚至更長的時間。在實現(xiàn)技術上也基本沿用較為成熟的IR(InformationRetrieval)、網(wǎng)絡、數(shù)據(jù)庫等技術,相當于利用一些已有技術實現(xiàn)的一個WWW上的應用。1994年4月,斯坦福大學的兩名博士生,美籍華人楊致遠和DavidFilo共同創(chuàng)辦了Yahoo!。隨著訪問量和收錄鏈接數(shù)的增長,Yahoo目錄開始支持簡單的數(shù)據(jù)庫搜索。因為Yahoo!的數(shù)據(jù)是手工輸入的,所以不能真正被歸為搜索引擎,事實上只是一個可搜索的目錄。Yahoo!中收錄的網(wǎng)站,因為都附有簡介信息,所以搜索效率明顯提高。2.2.3第二代搜索引擎大約在1996年出現(xiàn)的第二代搜索引擎系統(tǒng)大多采用分布式方案(多個微型計算機協(xié)同工作)來提高數(shù)據(jù)規(guī)模、響應速度和用戶數(shù)量,它們一般都保持一個大約50,000,000網(wǎng)頁的索引數(shù)據(jù)庫,每天能夠響應10,000,000次用戶檢索請求。1997年11月,當時最先進的幾個搜索引擎號稱能建立從2,000,000到100,000,000的網(wǎng)頁索引。Altavista搜索引擎聲稱他們每天大概要承受20,000,000次查詢。2000年搜索引擎2000年大會上,按照Google公司總裁LarryPage的演講,Google正在用3,000臺運行Linux系統(tǒng)的個人電腦在搜集Web上的網(wǎng)頁,而且以每天30臺的速度向這個微機集群里添加電腦,以保持與網(wǎng)絡的發(fā)展相同步。每臺微機運行多個爬蟲程序搜集網(wǎng)頁的峰值速度是每秒100個網(wǎng)頁,平均速度是每秒48.5個網(wǎng)頁,一天可以搜集超過4,000,000網(wǎng)頁搜索引擎一詞在國內外因特網(wǎng)領域被廣泛使用,然而他的含義卻不盡相同。在美國搜索引擎通常指的是基于因特網(wǎng)的搜索引擎,他們通過網(wǎng)絡機器人程序收集上千萬到幾億個網(wǎng)頁,并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網(wǎng)搜索引擎包括FirstSearch、Google、HotBot等。1997年8月,Northernlight搜索引擎正式現(xiàn)身。它曾是擁有最大數(shù)據(jù)庫的搜索引擎之一,它沒有StopWords,它有出色的CurrentNews、7100多出版物組成的SpecialCollection、良好的高級搜索語法,第一個支持對搜索結果進行簡單的自動分類。2.2.4當前著名的搜索引擎簡介1998年10月之前,Google只是斯坦福大學(StanfordUniversity)的一個小項目BackRub。1995年博士生LarryPage開始學習搜索引擎設計,于1997年9月15日注冊了的域名,1997年底,在SergeyBrin和ScottHassan、AlanSteremberg的共同參與下,BachRub開始提供Demo。1999年2月,Google完成了從Alpha版到Beta版的蛻變。Google公司則把1998年9月27日認作自己的生日。Google以網(wǎng)頁級別(Pagerank)為基礎,判斷網(wǎng)頁的重要性,使得搜索結果的相關性大大增強。Google公司的奇客(Geek)文化氛圍、不作惡(Don’tbeevil)的理念,為Google贏得了極高的口碑和品牌美譽。2006年4月,Google宣布其中文名稱“谷歌”,這是Google第一個在非英語國家起的名字。1996年8月,sohu公司成立,制作中文網(wǎng)站分類目錄,曾有“出門找地圖,上網(wǎng)找搜狐”的美譽。隨著互聯(lián)網(wǎng)網(wǎng)站的急劇增加,這種人工編輯的分類目錄已經(jīng)不適應。sohu于2004年8月獨立域名的搜索網(wǎng)站“搜狗”,自稱“第三代搜索引擎”。2000年1月,兩位北大校友,超鏈分析專利發(fā)明人、前Infoseek資深工程師李彥宏與好友徐勇(加州伯克利分校博士后)在北京中關村創(chuàng)立了百度(Baidu)公司。2001年8月發(fā)布B搜索引擎Beta版(此前Baidu只為其它門戶網(wǎng)站搜狐新浪Tom等提供搜索引擎),2001年10月22日正式發(fā)布Baidu搜索引擎,專注于中文搜索。Baidu搜索引擎的其它特色包括:百度快照、網(wǎng)頁預覽/預覽全部網(wǎng)頁、相關搜索詞、錯別字糾正提示、mp3搜索、Flash搜索。2002年3月閃電計劃(BlitzenProject)開始后,技術升級明顯加快。后推出貼吧、知道、地圖、國學、百科、文檔、視頻、博客等一系列產(chǎn)品,深受網(wǎng)民歡迎。2005年8月5日在納斯達克上市,發(fā)行價為USD27.00,代號為BIDU。開盤價USD66.00,以USD122.54收盤,漲幅353.85%,創(chuàng)下了5年以來美國股市上市新股當日漲幅最高紀錄。2003年12月23日,原慧聰搜索正式獨立運做,成立了中國搜索。2004年2月,中國搜索發(fā)布桌面搜索引擎網(wǎng)絡豬1.0,2006年3月中搜將網(wǎng)絡豬更名為IG(InternetGateway)。2.3搜索引擎的分類2.3.1全文索引全文搜索引擎是名副其實的搜索引擎,國外代表有Google,國內則有著名的百度搜索。它們從互聯(lián)網(wǎng)提取各個網(wǎng)站的信息(以網(wǎng)頁文字為主),建立起數(shù)據(jù)庫,并能檢索與用戶查詢條件相匹配的記錄,按一定的排列順序返回結果。

根據(jù)搜索結果來源的不同,全文搜索引擎可分為兩類,一類擁有自己的檢索程序(Indexer),俗稱“蜘蛛”(Spider)程序或“機器人”(Robot)程序,能自建網(wǎng)頁數(shù)據(jù)庫,搜索結果直接從自身的數(shù)據(jù)庫中調用,上面提到的Google和百度就屬于此類;另一類則是租用其他搜索引擎的數(shù)據(jù)庫,并按自定的格式排列搜索結果,如Lycos搜索引擎。2.3.2目錄索引目錄索引雖然有搜索功能,但嚴格意義上不能稱為真正的搜索引擎,只是按目錄分類的網(wǎng)站鏈接列表而已。用戶完全可以按照分類目錄找到所需要的信息,不依靠關鍵詞(Keywords)進行查詢。目錄索引中最具代表性的莫過于大名鼎鼎的Yahoo、新浪分類目錄搜索。2.3.3元搜索引擎1995年,一種新的搜索引擎形式出現(xiàn)了——元搜索引擎(MetaSearchEngine)。用戶只需提交一次搜索請求,由元搜索引擎負責轉換處理后提交給多個預先選定的獨立搜索引擎,并將從各獨立搜索引擎返回的所有查詢結果,集中起來處理后再返回給用戶。第一個元搜索引擎,是Washington大學碩士生EricSelberg和OrenEtzioni的Metacrawler。元搜索引擎(METASearchEngine)接受用戶查詢請求后,同時在多個搜索引擎上搜索,并將結果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索結果排列方面,有的直接按來源排列搜索結果,如Dogpile;有的則按自定的規(guī)則將結果重新排列組合,如Vivisimo。2.3.4垂直搜索引擎垂直搜索是針對某一個行業(yè)的專業(yè)搜索引擎,是搜索引擎的細分和延伸,是對網(wǎng)頁庫中的某類專門的信息進行一次整合,定向分字段抽取出需要的數(shù)據(jù)進行處理后再以某種形式返回給用戶。相對通用搜索引擎的信息量大、查詢不準確、深度不夠等提出來的新的搜索引擎服務模式,通過針對某一特定領域、某一特定人群或某一特定需求提供的有一定價值的信息和相關服務。其特點就是“專、精、深”,且具有行業(yè)色彩,相比較通用搜索引擎的海量信息無序化,垂直搜索引擎則顯得更加專注、具體和深入。2.3.5其他非主流搜索引擎形式(1)集合式搜索引擎該搜索引擎類似元搜索引擎,區(qū)別在于它并非同時調用多個搜索引擎進行搜索,而是由用戶從提供的若干搜索引擎中選擇,如HotBot在2002年底推出的搜索引擎。(2)門戶搜索引擎AOLSearch、MSNSearch等雖然提供搜索服務,但自身既沒有分類目錄也沒有網(wǎng)頁數(shù)據(jù)庫,其搜索結果完全來自其他搜索引擎。(3)免費鏈接列表(FreeForAllLinks簡稱FFA)一般只簡單地滾動鏈接條目,少部分有簡單的分類目錄,不過規(guī)模要比Yahoo!等目錄索引小很多。3系統(tǒng)需求分析3.1搜索引擎的工作原理為了幫助大家更好的理解本系統(tǒng),首先向大家介紹一下搜索引擎的工作原理。搜索引擎系統(tǒng)由四部分構成:信息搜集模塊、分析索引模塊和檢索服務模塊、。信息搜集模塊采用一種像真人一樣可以瀏覽網(wǎng)頁的Robot程序,這類程序能自動地在網(wǎng)上漫游,從一個或一組URL開始訪問,然后下載相應的網(wǎng)頁,抽取頁面中的鏈接,按照某種算法決定下一步要訪問的URL地址,常用的算法有廣度優(yōu)先和深度優(yōu)先。Robot(機器人)一詞對編程者有特殊的意義。ComputerRobot是指某個能以人類無法達到的速度不斷重復執(zhí)行某項任務的自動程序。由于專門用于檢索信息的Robot程序像蜘蛛(spider)一樣在網(wǎng)絡間爬來爬去,因此,搜索引擎的Robot程序被稱為spider程序。Robot程序不停地重復這個訪問過程,搜集信息資料,存儲到本地數(shù)據(jù)庫,直至再沒有滿足條件的新的URL地址或超出了某些條件限制。分析索引模塊將Robot程序采集的信息進行比較分析,刪除那些內容基本相似的轉載網(wǎng)頁,以及未加任何修改,內容完全相同的鏡像網(wǎng)頁,然后,對留存的網(wǎng)頁信息,剔除HTML等的標志符號,提取出網(wǎng)頁源文件內容特征的關鍵詞,匯集成索引數(shù)據(jù)庫,并隨時順著鏈接跟蹤網(wǎng)上新加入的主頁,為其建立索引。索引數(shù)據(jù)庫就是一個很大的查詢表,主要的字段有:網(wǎng)站的名稱、標題、URL地址、摘要等。對Web頁面內容進行全文索引,即對Web頁中每一個單詞進行標引。從網(wǎng)頁中按某些分類或特征對信息進行抽取。例如:Lycos僅標引文件名、文件標題和全文前20行的內容。而AltaVista的索引處理則最為全面,不僅對網(wǎng)頁的所有文本、圖像及鏈接等進行索引,而且還記錄單詞之間的相對位置。一般來說,標引的索引詞越多,檢索的全面性越高,分析索引模塊是搜索引擎提供檢索服務的基礎。3.2系統(tǒng)功能需求本系統(tǒng)的功能需求是:搜索引擎系統(tǒng)從一個或一組已URL開始訪問互聯(lián)網(wǎng),下載相關的網(wǎng)頁信息及新的鏈接,以一定的策略遍歷新鏈接,并讀取新鏈接的信息內容,將它們加入到本地數(shù)據(jù)庫。然后,由分析索引模塊對這些數(shù)據(jù)進行處理組織后,形成索引數(shù)據(jù)庫。用戶通過用戶模塊提交查詢服務,在搜索框中輸入檢索式,系統(tǒng)就會自動完成檢索,并按一定的排列方式返回檢索結果。對它有如下基本要求。能夠接受用戶通過瀏覽器提交的查詢詞或者短語,記作q,例如“聯(lián)想”,“IBM”,“hp”等等。在一個可以接受的時間內返回一個和該用戶查詢匹配的網(wǎng)頁信息列表。系統(tǒng)根據(jù)功能可分為兩個部分:檢索界面,可以接受用戶提交的檢索要求;檢索結果,將檢索到的資料整理組織后按一定順序提供給用戶。搜索引擎的檢索結果通常包含大量文獻,為了將最有“價值”的網(wǎng)頁提供給用戶,搜索引擎一般都能按查詢的相關程度對檢索結果進行排列,最相關的文獻通常排在最前面。3.3系統(tǒng)性能需求(1)系統(tǒng)要有很好的可移植性。(2)系統(tǒng)必須有很好的可維護性,代碼的格式規(guī)范。(3)系統(tǒng)要有健壯性。(4)界面設計要求簡潔、美觀、大方。(5)系統(tǒng)運行必須穩(wěn)定,消耗資源少,代碼效率高。(6)系統(tǒng)運行環(huán)境:Windows操作系統(tǒng),火狐瀏覽器。(7)系統(tǒng)開發(fā)環(huán)境:myeclips,Oracle10g數(shù)據(jù)庫。4系統(tǒng)總體設計4.1“飛夢”搜索引擎系統(tǒng)總體介紹4.1.1“飛夢”搜索引擎系統(tǒng)工作機制首先通過網(wǎng)頁爬蟲技術將網(wǎng)頁鏈接或者摘要搜集到數(shù)據(jù)庫中,然后定時將緩存更新,用戶在查詢時可直接從緩存中讀取信息,大大提高了響應速度。用戶的請求在得到響應后應先將查詢結果存于緩存,然后調用排序算法進行二次排序,最后將排序好的結果響應給用戶。4.1.2幾種常見的語義WEB排序技術(1)基于Web頁面內容排序基于Web頁面內容的排序算法,主要源自傳統(tǒng)信息檢索中常用的文本文檔加權標引算法,其基本思想是通過計算Web頁面中與查詢關鍵詞相匹配的索引項,對Web頁面主題內容的表征程度進行排序.基于Web頁面內容的排序算法非常豐富,其中以基于詞頻和位置的加權排序算法應用最為廣泛,有些算法盡管可以獲得更好的排序效果,但往往由于分析處理過于復雜而不能滿足海量Web信息檢索快速響應的需要.(2)基于Web頁面鏈接排序Web頁面的鏈接反映的是Web頁面之間形成的“參考”、“引用”或“推薦”關系,如果某一Web頁面被較多頁面鏈接,則表示它相對被人關注,其內容應該是比較重要或比較有用的,基于Web頁面鏈接分析的排序算法正是基于這一思想來度量Web頁面的重要性(質量)進行排序其中以PageRank算法最具代表性.PageRank算法以“隨機沖浪”模型為理論基礎,而HITS算法使用Authority和Hub頁面相互加強模型,二者都利用了頁面和超鏈接組成的有向圖,根據(jù)連接關系進行遞歸運算來確定Web頁面的重要性得分.但是,PageRank算法在計算時沒有考慮用戶的具體查詢內容和Web頁面實際表達內容,對與頁面相鏈接的其他頁面是否和該頁面主題相關也沒有考慮,因此在排序時容易產(chǎn)生主題漂移(topicdrift).另外,頁面的PageRank值單純依靠人鏈數(shù)量的多寡及入鏈的PageRank值進行計算,使得許多內容質量很高的頁面可能因為人鏈數(shù)量過少只能獲得較低的排名,舊頁面的排序往往比新頁面更為有利,因為新頁面獲得的鏈接數(shù)量通常要少于舊頁面,搜索引擎優(yōu)化(SEO)人員也很容易通過增加頁面入鏈數(shù)量等方式來獲得更高的頁面排名。(3)基于檢索用戶排序搜索引擎查詢結果是否相關、排序是否合理最終取決于用戶的主觀判斷.不同用戶的動機、知識、興趣、社會閱歷等差異很大,因而對檢索結果的評價也會產(chǎn)生較大的偏差,理想的檢索排序算法應該對來自用戶的個人因素加以考慮.基于檢索用戶的排序主要分為2種:一種是基于檢索用戶群體的排序,如AskJeeves公司提出的DirectHit算法;一種是基于檢索用戶個體的排序,也稱為個性化檢索排序,用戶個性的表達可以通過2種方式完成:一種是用戶主動提交個人信息或直接對系統(tǒng)進行相關反饋;另一種是系統(tǒng)通過分析該用戶在客戶端或服務器端的檢索行為加以確定.4.1.3語義本體概念本體知識庫是語義搜索引擎進行推理和知識積累的基礎和關鍵,而Ontology(本體)則是知識庫的基礎。一般來說,本體提供一組術語和概念來描述某個領域,知識庫則使用這些術語來表達該領域的事實。例如醫(yī)藥本體可能包含“白血病”、“皮膚病”等術語的定義,但它不會包含具體某一病人的診斷結果,而這正是知識庫所要表達的內容。比如張三患有皮膚病、李四患有皮膚病和白血病、王五患有白血病,其中的皮膚病、白血病就是本體。而各個病癥的實例(張三、李四、王五)及其病癥描述就是知識庫的內容。對它有如下基本要求:能夠接受用戶通過瀏覽器提交的查詢詞或者短語。在一個可以接受的時間內返回一個和該用戶查詢匹配的網(wǎng)頁信息列表。這個列表的每一條目至少包含三個元素(標題,網(wǎng)址鏈接,摘要)4.1.4語義搜索搜索引擎技術伴隨著WWW的發(fā)展是引人注目的。“飛夢”搜索引擎是基于Web的,基于語義排序的搜索引擎。顧名思義,所謂語義搜索,是指搜索引擎的工作不再拘泥于用戶所輸入請求語句的字面本身,而是透過現(xiàn)象看本質,準確地捕捉到用戶所輸入語句后面的真正意圖,并以此來進行搜索,從而更準確地向用戶返回最符合其需求的搜索結果。

語義web服務是語義WEB服務技術的有機結合,通過對WEB服務添加語義標注,使得數(shù)據(jù)能被計算機自動處理和理解,讓計算機可以在因特網(wǎng)海量信息中找到所需的任何信息,從而將萬維網(wǎng)中現(xiàn)存的信息發(fā)展成一個巨大的的全球信息庫、數(shù)據(jù)庫,語義WEB服務搜索是一個滿足服務請求者快速便捷的定位可用語義WEB服務資源的過程。隨著因特網(wǎng)上語義web服務數(shù)量急劇增加,語義WEB服務的調用和組合都必須基于語義WEB服務搜索來完成。因此語義WEB服務搜索技術是語義WEB服務技術走向成熟和大規(guī)模應用的一個必備條件和重要標志。4.1.5基于本體的語義排序自語義WEB服務概念提出以來,關于語義WEB服務搜索方面的研究工作也受到研究人員的關注和重視,做了很多有益的探索。其中涉及的研究主題主要包含語義WEB服務資源的索引研究,語義WEB服務服務資源的匹配策略研究等。深入了解這些工作后可以得知,在語義WEB服務搜索的多個研究主題中,其中一個不可缺少環(huán)節(jié)就是,語義WEB服務匹配結果排序機制。本文在綜合概括和分析各種關系與語義WEB服務匹配結果排序機制的基礎上提出了一種基于本體域的語義距離度量模型的語義WEB服務匹配結果的排序機制,詳細闡述了該排序機制的原理,利用該排序機制,將語義WEB服務引用概念間的語義關系轉換成可以精確比較的量化度量值,對于屬于相同語義匹配類型的匹配候選服務與服務請求也能夠分別計算語義距離,從而區(qū)分出相同類型的候選服務與服務請求的匹配程度?;谡Z義距離度量模型的排序機制能夠得到精確的語義距離度量值,從而達到改善用戶對語義WEB服務的體驗目地。

舉例來說吧,當一個用戶在搜索框中輸入“孟字去掉子”時,深諳語義搜索的搜索引擎就能夠判斷出,用戶想要找的并不是含有“孟”、“去掉子”等字眼的內容,而是想要查找與“皿”這個字相關的內容;同樣,當用戶搜索“表現(xiàn)春天的圖片”時,搜索引擎會向其呈現(xiàn)出各種與春天相關的圖片,而不僅僅局限于該圖片的標題是否包含“春天”字樣?!翱梢越邮艿臅r間”,也就是響應時間。這是衡量搜索引擎可用性的一個基本指標,也是和傳統(tǒng)信息檢索系統(tǒng)的一個差別。對于基于BS架構的軟件來說,響應時間不能太長,通常在“秒”這個量級。當用戶在檢索框中輸入要檢索的信息時,系統(tǒng)將“匹配”與之相對應的結果集。“匹配”,指的是數(shù)據(jù)庫中以某種形式包含有request,這種形式包括三種情況:1,全文匹配2,包含關系3,關聯(lián)關系。由于Web上的信息量大,而且搜索引擎的查詢方式簡單。簡單,意味著抽象;抽象,意味著有更多的具體事物可能是它的體現(xiàn)。對于一個長長的列表,很少有用戶有耐心都審視一遍。因此返回的結果集將會在結果界面返回,并且對其進行分頁。用戶首先在文本框中輸入要檢索的關鍵字,然后,單擊搜索按鈕。圖4-1搜索界面4.2系統(tǒng)邏輯設計4.2.1系統(tǒng)時序圖 圖4-2系統(tǒng)時序圖 4.2.2系統(tǒng)流程圖 圖4-3系統(tǒng)流程圖4.2.3系統(tǒng)數(shù)據(jù)流程圖 圖4-4數(shù)據(jù)流程圖4.3系統(tǒng)模塊介紹4.3.1模塊功能介紹現(xiàn)代大規(guī)模高質量搜索引擎一般包括三個部分即:網(wǎng)頁搜集、預處理和查詢服務。為實現(xiàn)語義排序的功能,更好的提升服務性能,“飛夢”搜索引擎系統(tǒng)將系統(tǒng)分為四個子模塊,分別為抓取模塊,檢索模塊,語義排序模塊,用戶模塊。飛夢語義飛夢語義搜索引擎抓取模塊用戶模塊語義排序模塊檢索模塊抓取模塊用戶模塊語義排序模塊檢索模塊圖4-5“飛夢”搜索引擎的的系統(tǒng)模塊圖(1)抓取網(wǎng)頁抓取模塊的主要功能是用來將web上的海量網(wǎng)頁抓取到系統(tǒng)中;首先“飛夢”搜索引擎是一個網(wǎng)絡應用軟件系統(tǒng),這個軟件系統(tǒng)操作的數(shù)據(jù)不僅包括內容不可預測的用戶查詢,還要包括在數(shù)量上動態(tài)變化的海量網(wǎng)頁,并且這些網(wǎng)頁不會主動送到系統(tǒng)來,而是需要由系統(tǒng)去抓取。首先,考慮抓取的時機:事先情況下,從網(wǎng)上下載一篇網(wǎng)頁大約需要1秒鐘左右,因此如果在用戶查詢的時候即時去網(wǎng)上抓來成千上萬的網(wǎng)頁,一個個分析處理,和用戶的查詢匹配,不可能滿足搜索引擎的響應時間要求。不僅如此,這樣做的系統(tǒng)效益也不高(會重復抓取太多的網(wǎng)頁);面對大量的用戶查詢,不可能想象每來一個查詢,系統(tǒng)就到網(wǎng)上“搜索”一次。本系統(tǒng)所采用的方式為將一定數(shù)量的目標網(wǎng)頁一次性抓取到本地。抓取后,還要對網(wǎng)頁進行維護。因為,網(wǎng)頁是不斷更新變化的,因此要進行定期搜集,每次搜集替換上一次的內容,稱之為“批量搜集”。由于每次都是重新來一次,對于大規(guī)模搜索引擎來說,每次搜集的時間通常會花幾周。而由于這樣做開銷較大,通常兩次搜集的間隔時間也不會很短(例如早期天網(wǎng)的版本大約每3個月來一次,Google在一段時間曾是每隔28天一次)。最常見的一種是所謂“爬取”:將Web上的網(wǎng)頁集合看成是一個有向圖,搜集過程從給定起始URL集合S(或者說“種子”)開始,沿著網(wǎng)頁中的鏈接,按照先深、先寬、或者某種別的策略遍歷,不停的從S中移除URL,下載相應的網(wǎng)頁,解析出網(wǎng)頁中的超鏈接URL,看是否已經(jīng)被訪問過,將未訪問過的那些URL加入集合S。整個過程可以形象地想象為一個蜘蛛(spider)在蜘蛛網(wǎng)(Web)上爬行(crawl)。真正的系統(tǒng)其實是多個“蜘蛛”同時在爬。這種方式的好處除了概念很漂亮,一般實現(xiàn)起來也不困難。任何所謂目標網(wǎng)頁指的是搜索引擎設計覆蓋的網(wǎng)頁范圍。搜索引擎是不可能將Web上的網(wǎng)頁搜集完全的,通常都是在其他條件的限制下決定搜集過程的結束。由于HTML的靈活性,其中出現(xiàn)URL的方式各種各樣,將這個環(huán)節(jié)做得徹底不容易。同時,由于Web的“蝴蝶結”形狀,這種方式搜集到的網(wǎng)頁不大會超過所有目標網(wǎng)頁數(shù)量的2/3。本系統(tǒng)使用的方法是使用Heritrix來完成對網(wǎng)頁的抓取。無論多么強大的搜索引擎工具,在其后臺,都需要一樣東西來支援它,那就是網(wǎng)絡爬蟲Spider。網(wǎng)絡爬蟲,又被稱為蜘蛛Spider,或是網(wǎng)絡機器人、BOT等,這些都無關緊要,最重要的是要認識到,由于爬蟲的存在,才使得搜索引擎有了豐富的資源。Heritrix是一個純由Java開發(fā)的、開源的Web網(wǎng)絡爬蟲,用戶可以使用它從網(wǎng)絡上抓取想要的資源。它來自于。Heritrix最出色之處在于它的可擴展性,開發(fā)者可以擴展它的各個組件,來實現(xiàn)自己的抓取邏輯。本系統(tǒng)就是使用Heritrix來實現(xiàn)抓取模塊。圖4-6抓取模塊的流程圖(2)檢索信息檢索信息模塊的主要功能:a)解析網(wǎng)頁,提取其中的有用內容。b)為網(wǎng)頁建立詞庫,由于筆記本電腦的品牌名在現(xiàn)有詞庫中不存在,因此要建立其特有的詞庫文件。c)對解析網(wǎng)頁生成的信息文件進行分詞,并建立索引。d)將索引存入數(shù)據(jù)庫中得到海量的原始網(wǎng)頁集合,距離面向網(wǎng)絡用戶的檢索服務之間還有相當?shù)木嚯x。 首先,要對原始網(wǎng)頁進行分析,將其中的有價值的部分提取出來,在網(wǎng)頁中存在著大量無用的信息比如大量的HTML標記。但HTML標記既給網(wǎng)頁的預處理造成了一些麻煩,也帶來了一些新的機遇。從信息檢索的角度講,如果系統(tǒng)面對的僅僅是內容的文字,我們能依據(jù)的就是其內容所包含的關鍵詞集合,最多加上詞頻(termfrequency或tf、TF)和詞在文檔集合中出現(xiàn)的文檔頻率(documentfrequency或df、DF)之類的統(tǒng)計量。而TF和DF這樣的頻率信息能在一定程度上指示詞語在一篇文檔中的相對重要性或者和某些內容的相關性,這是有意義的。有了HTML標記后,情況還可能進一步改善,例如在同一篇文檔中,<H1>和</H1>之間的信息很可能就比在<H4>和</H4>之間的信息更重要。當本人利用Heritrix將本人所需要的網(wǎng)頁全部抓取下來時,需要將本人所關注的信息從網(wǎng)頁中分析出來。因此使用了HTMLParser這個工具來解析網(wǎng)頁,并將網(wǎng)頁的標題作為索引記錄下來;并按照網(wǎng)頁的題目(即索引信息)建立信息文件,該信息文件用來保存索引信息的標題、時間、傳作者、標題、內容等。分析完成后要對此信息文件進行建索。在這個部分,需要準備開始將產(chǎn)品詳細信息插入到數(shù)據(jù)庫,并建立Lucene的索引,以下是要做的兩件事:定義一個Product類作為裝載數(shù)據(jù)的值對象;確定數(shù)據(jù)庫與索引的結構。數(shù)據(jù)庫的處理用JDBC來實現(xiàn)。具體實現(xiàn)步驟為:使用addInfo方法來向數(shù)據(jù)庫中插入記錄。addInfo方法的參數(shù)是一個Info類型的對象,在此方法中,從Infot對象中取出相應的值,然后創(chuàng)建一個PreparedStaement,來執(zhí)行JDBC的寫入。在寫入前,首先調用getNextId方法取得所要插入的這條記錄的ID號,并隨著方法返回給調用者,以便調用者可以將這個ID傳到Lucene的索引中,以次將數(shù)據(jù)庫記錄和Lucene的索引對應起來。(3)語義排序模塊語義排序模塊的主要功能:語義排序是系統(tǒng)中最為核心的模塊之一,系統(tǒng)通過此模塊實現(xiàn)對數(shù)據(jù)庫中索引進行排序,具體的實現(xiàn)細節(jié)是,搜索引擎首先將數(shù)據(jù)索引從數(shù)據(jù)庫中查出,放在緩存中(Map或者List視具體搜索要求)然后采用核心排序算法rankOrder(Collectioncollection)對緩存中數(shù)據(jù)進行排序,之后將結果集返回給客戶。(4)用戶模塊 用戶模塊的主要功能:用戶模塊是系統(tǒng)的用戶接口,用戶通過此模塊完成于系統(tǒng)的交互。當用戶在查詢界面上輸入要檢索的信息后,系統(tǒng)將在可以接受的時間內,返回用戶所需的結果集。用戶通過搜索引擎的查詢頁面訪問到“飛夢”搜索引擎,在查詢的文本框中輸入要查詢的品牌名稱,然后,點擊查詢按鈕,系統(tǒng)將到數(shù)據(jù)庫中查詢,并將結果集返回。如果,查詢不到用戶輸入的關鍵字所對應的產(chǎn)品信息,就返回提示信息,提示用戶沒有于其輸入的關鍵字所對應的結果。用戶模塊要滿足的條件有:1)能夠接受用戶通過瀏覽器提交的查詢詞或者短語,記作q,例如“聯(lián)想”,“IBM”,“hp”等等。2)在一個可以接受的時間內返回一個和該用戶查詢匹配的網(wǎng)頁信息列表,記作L。這個列表的每一條目至少包含三個元素(標題,網(wǎng)址鏈接,摘要)。5系統(tǒng)詳細設計5.1模塊總體介紹從本章開始介紹系統(tǒng)的詳細設計。首先,對本系統(tǒng)的結構進行簡單的介紹,“飛夢”搜索引擎的系統(tǒng)的前端以MVC模式來實現(xiàn),Spring做中間層,JDBC作后端來開發(fā)實現(xiàn)的。系統(tǒng)架構從功能上可以分為前端和后端兩部分。在后端流程中,Heritrix從因特網(wǎng)上獲取Web頁面,并解析這些網(wǎng)頁,提取出網(wǎng)頁中有用的信息生成info文本文件,文件名以信息標題+創(chuàng)建時間命名。然后索引子系統(tǒng)解析這些Web頁面并存入索引文件中。并且將info文本文件封裝成Info對象寫入數(shù)據(jù)庫中。在前臺流程中,用戶在index.jsp中輸入關鍵字后,系統(tǒng)將對關鍵字進行分詞,然后到數(shù)據(jù)庫中查找與其對應的結果集,作為結果列表返回,當用戶點擊某產(chǎn)品的摘要時,跳轉到detail.jsp頁面中,在此頁面顯示產(chǎn)品的詳細信息。“飛夢”搜索引擎系統(tǒng)的模塊分為四個子模塊,分別為抓取模塊,處理模塊,語義排序模塊,用戶模塊。其中抓取模塊又可分為安裝配置子模塊,分析網(wǎng)頁子模塊;處理模塊可分為解析網(wǎng)頁子模塊,創(chuàng)建詞庫子模塊,生成持久化類子模塊,創(chuàng)建Document子模塊,存儲數(shù)據(jù)子模塊;用戶模塊可以分為查詢主頁面,詳細信息頁面。圖5-1系統(tǒng)模塊圖5.2抓取子模塊5.2.1運行Heritrix子模塊本系統(tǒng)所使用的方法是使用Heritrix來完成對網(wǎng)頁的抓取。首先將Heritrix在自己的電腦上配置好。然后,運行Heritrix,運行步驟如下:(1)設置任務a)單擊WebUI菜單欄上的“Jobs”標簽,就可以進入任務創(chuàng)建頁面。圖5-2菜單欄上的“Jobs”標簽b)在任務創(chuàng)建頁面中,有4種創(chuàng)建任務的方式,如圖4-2所示,具體含義如下。Basedonexistingjob:以一個已經(jīng)有的抓取任務為模板,創(chuàng)建所有抓取屬性和抓取起始URL的列表。Basedonarecovery:在以前的某個任務中,可能設置過一些狀態(tài)點,新的任務將從這個設置的狀態(tài)點開始。Basedonaprofile:專門為不同的任務設置了一些模板,新建的任務將按照模板來生成。Withdefaults:這個最簡單,表示按默認的配置來生成一個任務。圖5-3“任務”菜單中在Heritrix中,一個任務對應一個描述文件。這個描述文件的默認的名稱為order.xml。每次創(chuàng)建一個新任務時,都相當于生成了一個order.xml的文件。文件中詳細記錄了Heritrix在運行時需要的所有信息。例如,它包括該用戶所選擇的Processor類、Frontier類、Fetcher類、抓取時線程的最大數(shù)量、連接超時的最大等待時間等信息。上面所說的4種創(chuàng)建抓取任務的方式,其實都是在生成一個order.xml文件。其中,第4種Withdefaults,則是直接拷貝默認的order.xml文件。在所創(chuàng)建的Eclipse工程或是命令行啟動的Heritrix下載包中,該默認的order.xml文件均是放于profiles\default目錄下的。關于order.xml的細節(jié),在此還不必深究。因為它里面所有的內容,都會在WebUI上看到。c)單擊Withdefaults鏈接,創(chuàng)建一個新的抓取任務。這里需要解釋一下seeds的含義。所謂seeds,其實指的是抓取任務的起始點。每次的抓取,總是需要從一個起始點開始,在得到這個起始點網(wǎng)頁上的信息后,分析出新的地址加入抓取隊列中,然后循環(huán)抓取,重復這樣的過程,直到所有鏈接都分析完畢。當然,憑著目前的設置,還沒法開始抓取網(wǎng)頁,還需要對這個任務進行詳細的設置。(2)設置抓取時的處理鏈在圖5-4中,seeds文本框下有一排按鈕,單擊“Modules”按鈕,就進入了配置抓取時的處理鏈的頁面。圖5-4配置處理鏈的頁面從上而下,可以看到,需要配置的內容共有7項,其中CrawlScope和Frontier是兩個最重要的組件。CrawlScope用于配置當前應該在什么范圍內抓取網(wǎng)頁鏈接。比如,如果選擇BroadScope,則表示當前抓取的范圍不受限制,但如果選擇了HostScope,則表示抓取的范圍在當前的Host內。從經(jīng)驗看來,在抓取時,無論是HostScope或PathScope都不能真正的限制抓取的內容。需要對Scope內的代碼進行一定的修改才可以,因此,暫時選擇BroadScope來充當示例中的范圍限定,其實也就是對范圍不做任何的限定。即從開始,抓取任何可以抓取到的信息。Frontier則是一個URL的處理器,它將決定下一個被處理的URL是什么。同時,它還會將經(jīng)由處理器鏈所解析出來的URL加入到等待處理的隊列中去。除了這兩個組件外,還有5個隊列要配。這五個隊列根據(jù)先后的順序,就依次組成了Heritrix的整個處理器鏈。5個隊列的含義分別如下:1)PreProcessor:這個隊列中,所有的處理器都是用來對抓取時的一些先決條件做判斷的。比如判斷robot.txt的信息等,它是整個處理器鏈的入口。2)Fetcher:從名稱上看,它用于解析網(wǎng)絡傳輸協(xié)議,比如解析DNS、HTTP或FTP等。在演示中,主要使用FetchDNS和FetchHTTP兩個類。3)Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析當前獲取到的服務器返回內容,這些內容通常是以字符串形式緩存的。在這個隊列中,包括了一系列的工具,如解析HTML、CSS等。在解析完畢,取出頁面中的URL后,將它們放入隊列中,等待下次繼續(xù)抓取。4)Writer:主要是用于將所抓取到的信息寫入磁盤。通常寫入磁盤時有兩種形式,一種是采用壓縮的方式寫入,在這里被稱為Arc方式,另一種則采用鏡象方式寫入。當然處理起來,鏡象方式要更為容易一些,因此,在演示中命名用鏡象Mirror方式。5)PostProcessor:在整個抓取解析過程結束后,進行一些掃尾的工作,比如將前面Extractor解析出來的URL有條件的加入到待處理隊列中去。值得一提的是,在處理器鏈的設置過程中,每一個隊列中的處理器都是要分先后順序的,信息的處理流程實際上是不可逆的,因此,在設置時,可以看見在隊列的右側總是有“Up”、“Down”和“Remove”這樣的操作,以幫助能夠正確的設置其順序。在設置完Hertrix所需的處理鏈后,仍然還不能夠馬上開始抓取任務,還需對默認的運行時參數(shù)做一些修改,以適應真正的需要。(3)設置運行時的參數(shù)在設置完處理鏈后,單擊“Settings”鏈接,就進入了屬性設置的頁面,如圖5-5所示。圖5-5進入“Settings”在屬性設置頁面上有非常多的輸入域,Heritrix在抓取網(wǎng)頁時,這些域是用來對的各個組件的值進行預設。 圖5-6屬性配置頁面可以看到,在每個屬性的右側都有一個小問號,當單擊問號時,就會彈出一個Javascript的Alert提示框,上面介紹了當前屬性的作用。例如,在上圖中單擊“max-bytes-download”屬性,通過Alert的提示可以知道,它表示的是抓取器最大下載的字節(jié)數(shù),當下載字節(jié)數(shù)超過這個屬性上所設定的值時,抓取就會自動停止。另外,如果將這個值設為0,則表示沒有限制。事實上,當在第一次使用Heritrix時,所需要設置的參數(shù)并不多,以默認設置為主。以下就來介紹一些必須要在第一次使用時就要配置好的參數(shù)。a)max-toe-threads該參數(shù)的含義很容易了解,它表示Heritrix在運行該抓取任務時,為任務分配多少個線程進行同步抓取。該參數(shù)的默認值為100,在機器配置和網(wǎng)絡均很好的情況下,設置50個線程數(shù)就已經(jīng)足夠使用了。b)HTTP-Header在HTTP-Header這個屬性域下面,包括兩個屬性值“user-agent”和“from”?!癅VERSION@”字符串需要被替換成Heritrix的版本信息?!癙ROJECT_URL_HERE”可以被替換成任何一個完整的URL地址?!癴rom”屬性中不需要設置真實的E-mail地址,只需是格式正確的郵件地址就可以了。當正確設置了上述的兩個屬性后,Heritrix就具備了運行的條件。單擊“Submit”鏈接,提交這個抓取任務,至此,已經(jīng)把Heritrix成功的運行起來如圖。到此步驟,Heritrix的安裝配置基本完成。5.2.2分析網(wǎng)頁子模塊(1)選擇網(wǎng)站從技術角度看,選擇網(wǎng)站的幾點主要依據(jù)是:a)網(wǎng)站能夠被爬蟲抓取。因為有的網(wǎng)站使用了反爬蟲技術,防止未授權的爬蟲對網(wǎng)頁進行抓取。b)網(wǎng)站的信息不是使用Javascript動態(tài)生成的。c)網(wǎng)站的頁面結構不應當經(jīng)常變化,最好是使用模板動態(tài)生成的。根據(jù)以上原則,“飛夢”選擇了百度頁面作為種子來進行抓取。(2)在Heritrix中為信息抓取所需的定制類(3)運行抓取任務抓取任務的運行時間很長,Heritrix需要以種子的URL為入口對符合要求的網(wǎng)頁及連接進行抓取,并將抓取到的網(wǎng)頁信息存儲到本地的Heritrix的鏡象目錄下。(4)Heritrix的鏡象存儲結構由于在前面設置了Writer的類型為MirrorWriter。因此,磁盤上應該留有了所抓取到的網(wǎng)頁的各種鏡象。那么,究竟Heritrix是如何存儲下鏡象信息的呢?打開Eclipse的workspace目錄,進入heritrixProject的工程,里面有一個jobs目錄。進入后,找到以剛才job的名稱打頭的文件夾,這里面的內容,就是Heritrix在運行時生成的。其中,有一個mirror目錄,進入后,如圖5-7所示。圖5-7mirror目錄下的內容其實所謂鏡象方式存儲,就是將URL地址按“/”進行切分,進而按切分出來的層次存儲,比如一個URL地址為:/index.html那么它在mirror目錄中的保存位置就該是目錄下的index.html文件。為了驗證這一說法的準確性,打開目錄,可以看到圖5-8。圖5-8鏡象示例果然,index.html文件就在這個目錄下。另外,Heritrix也同樣將各種圖片或腳本信息按路徑進行了保存,例如,在目錄下有一個images目錄,其中就保存了URL地址如/images/xxx.gif這樣的圖片信息。如圖5-9所示。圖5-9抓取下來的圖片文件(5)終止抓取或終止Heritrix的運行當用戶進行某個抓取任務時,有兩種方法會讓任務停止下來。1)正常終止第一種方法當然就是任務的自然結束,其條件為所有隊列中的URI都已經(jīng)被處理過了。此時,任務將自然終止。在“Jobs”面版上會看到任務已經(jīng)完成,被加入到“Completedjobs”列表中。2)強行終止當然,任務不可能總是運行完,這可能是因為對任務的控制不夠,結果抓取了太多不相關的信息,進而造成URL隊列無限制膨脹,無法終止。在這種情況下,就需要強行將任務終止。單擊“Terminate”鏈接后,當前在運行的抓取任務就會立即終止,并同樣將任務放置到“Jobs”面版上的“Completedjobs”列表中,只不過在“status”上,它會顯示“Finished-Endedbyoperator”這樣的提示。當然,如果用戶希望關閉Heritrix,并終止所有正在運行的任務,也可以單擊Console面版上的“ShutdownHeritrixsoftware”的鏈接,此時,Heritrix會彈出一個警告,告訴你如果關閉Heritrix,則當前一切正在運行的任務都將被終止。如果選擇“I’msure,shutitdown”,則Heritrix的WebUI將會終止,虛擬機進程結束。至此使用Heritrix對目標網(wǎng)頁的工作已經(jīng)全部完成。5.3信息檢索子模塊5.3.1解析網(wǎng)頁子模塊Heritrix抓取網(wǎng)頁后,將相關信息存儲下來,實際上就是對Web頁面對應的Html文檔進行處理.由于作為Web頁保存下來的HTML格式,除了標題、正文部分外,還包含許多的Html的控制命令.要實現(xiàn)中文信息處理,需要過濾許多無用信息.因此將HTML文檔轉化為txt(純文本)文件,就是Web信息預處理所要解決的問題。由HTML文檔轉化為txt文檔,主要是提取出HTML文檔中的3種信息:(1)文檔標題:通過提取出置標命令〈h1〉與〈/h1〉之間字串而得到;(2)文檔內容:通過提取出置標命令〈Body〉與〈/Body〉之間所有文本得到;(3)新的鏈接:通過提取出置標命令〈Ahref=字串〉中引號部分的字符串得到;文檔格式轉化具體實現(xiàn)過程為:對通篇HTML文檔進行掃描分析,識別一些基本的置標命令,如表格“<TR>”,標題“<h1>”,超鏈接“<A>”等控制命令。設置一些字符串變量,如STR:存儲HTML文檔中的正文部分;S:存儲一對“<”和“>”之間的內容;TitleStr:存儲標題部分的內容.將“<h1>”和“</h1>”之間的字符存儲到Titlestr中,再過濾掉如“<script>”和“</script>”之間字符串(一般是系統(tǒng)函數(shù)或者過程),“<style>”和“</style>”之間的字符串(一般是對于頁面風格的設置)等等;同時將正文的字符串存儲到Str中。當整篇文檔掃描完后,將Titlestr和STR輸出,再加一些細節(jié)處理,就可以得到純文本(txt)文檔。例如生成包括筆記本電腦的品牌名及型號,屬性信息,以及此品牌所在網(wǎng)頁的URL的信息的文本文件。圖5-10筆記本電腦的信息文件5.3.2創(chuàng)建詞庫子模塊為所有信息構建一個產(chǎn)品信息詞庫,這個詞庫應當包括抓取下來的所有信息。將上述文本文件的標題提取出來,存入詞庫文件中。5.3.3生成持久化類子模塊定義Infor類,product類存儲了在數(shù)據(jù)庫中和索引中將要用到的信息。其中的各屬性字段及其意義為:信息種類:privateStringcategory信息標題:privateStringtitle作者:privateStringauthor具體內容:privateStringcontent顯示于搜索結果列表中的信息摘要:privateStringsummary圖片文件名:privateStringimageURI最后更新時間:privateStringupdatedtime原始URL:privateStringoriginalUrl5.3.4創(chuàng)建Document子模塊并將網(wǎng)頁的標題作為索引記錄下來;并按照網(wǎng)頁的題目(即索引信息)建立信息文件,該信息文件用來保存索引的信息,包括索引信息的種類,作者,創(chuàng)建時間,內容等都保存到Document中。分析完成后要對此信息文件進行建索。這些過程都是通過Lucene來完成的。Lucene是一個基于Java的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是為你的應用程序提供索引和搜索功能。Lucene目前是ApacheJakarta家族中的一個開源項目。也是目前最為流行的基于Java開源全文檢索工具包。目前已經(jīng)有很多應用程序的搜索功能是基于Lucene的,比如Eclipse的幫助系統(tǒng)的搜索功能。Lucene能夠為文本類型的數(shù)據(jù)建立索引,所以你只要能把你要索引的數(shù)據(jù)格式轉化的文本的,Lucene就能對你的文檔進行索引和搜索。比如你要對一些HTML文檔進行索引的話你就首先需要把HTML文檔轉化成文本格式的,然后將轉化后的內容交給Lucene進行索引,然后把創(chuàng)建好的索引文件保存到磁盤或者內存中,最后根據(jù)用戶輸入的查詢條件在索引文件上進行查詢。不指定要索引的文檔的格式也使Lucene能夠幾乎適用于所有的搜索應用程序。 飛夢搜索引擎的檢索和建索部分都是由Lucene來實現(xiàn)的,這是搜索引擎系統(tǒng)的核心部分之一。下面是有關這部分的技術介紹;索引是現(xiàn)代搜索引擎的核心,建立索引的過程就是把源數(shù)據(jù)處理成非常方便查詢的索引文件的過程。為什么索引這么重要呢,試想你現(xiàn)在要在大量的文檔中搜索含有某個關鍵詞的文檔,那么如果不建立索引的話你就需要把這些文檔順序的讀入內存,然后檢查這個文章中是不是含有要查找的關鍵詞,這樣的話就會耗費非常多的時間,想想搜索引擎可是在毫秒級的時間內查找出要搜索的結果的。這就是由于建立了索引的原因,你可以把索引想象成這樣一種數(shù)據(jù)結構,他能夠使你快速的隨機訪問存儲在索引中的關鍵詞,進而找到該關鍵詞所關聯(lián)的文檔。Lucene采用的是一種稱為反向索引(invertedindex)的機制。反向索引就是說我們維護了一個詞/短語表,對于這個表中的每個詞/短語,都有一個鏈表描述了有哪些文檔包含了這個詞/短語。這樣在用戶輸入查詢條件的時候,就能非常快的得到搜索結果。5.3.5存儲數(shù)據(jù)子模塊這個模塊是通過封裝了JDBC的Hibernat來實現(xiàn)的,利用它將上述定義的TNews對象存入數(shù)據(jù)庫中。本系統(tǒng)使用的數(shù)據(jù)庫為Oracle,通過Hibernate來訪問Oracle。JDBC訪問數(shù)據(jù)庫時所用到的driverClassName,url,username,password都在屬性文件中定義,實現(xiàn)了可配置性及可移植性。5.4語義排序模塊5.4.1概念定義概念定義語義權重分層屬性語義關系權重:0.XYY****.其中,小數(shù)點后面的第一個X是預留位,YY是屬性擴展,/*0表示保留位數(shù).用下面的方法來確定屬性層次級別權重:將每個屬性在所有檢索到的文章中進行統(tǒng)計,得到不同屬性的統(tǒng)計頻率,保留2位小數(shù),統(tǒng)計出某一階段人們對某一種屬性的關注程度,這樣可以確定分層系統(tǒng)中的YY值.語義信息熵定義對每一篇文檔Di,iIN來說,設X為Di中所包含本體匹概念/關系的隨機變量,則語義信息熵為SH(x)=-Epc(x)1lgp(x)式中:pc(x)表示在本體中所定義詞匯的權重,表示某個概念對于原始檢索集所有文檔來說所占比重;p(x)表示在某一篇文檔中所占的統(tǒng)計量,表示在該文檔中某個概念所占比重。 時間加權因子:對于每一篇文檔信息都有自己被收錄在索引數(shù)據(jù)庫中的時間,按照被收錄的早晚,最晚被收錄的信息應具有較高的優(yōu)先級5.4.2算法實現(xiàn)原理根據(jù)上面語義概念權重分層和語義信息熵的定義,給出語義排序OntoRank算法及其相關解釋:對于原始檢索集中的文檔,抽取與本體中匹配的概念或者實例形成Concept_Set[i]集合,并推理其間的關系形成Relation_Set[i],其中iIN,N為原始檢索集Result_Set中編號.(1)于每篇文檔DiIRetrieval_Se,t如果概念CijISO_Concept_Se,t令Cij→Concept_Set[i,j],統(tǒng)計概念頻率FCij,i為文檔號,j為概念號。(2)針對每一篇文檔i,根據(jù)Concept_Set[i]中所包含的概念,由本體庫中推理出相互關系Rik(Cim,Cin)<SO_Relation_Se,t令Rik→Relation_Set[i,k],統(tǒng)計關系頻率FRik,其中Cim、Cin為此篇文檔中不同概念,Rik(Cim、Cin)為概念之間的連接關系。(3)對于CijIConcept_Set[i,j],RikIRelation_Set[i,k]。(4)計算Cij權重=統(tǒng)計Cij在Concept_Set[i,j]中頻率|Concept_Set[i,j]|計算Rik權重=統(tǒng)計Rik在Relation_Set[i,k]中頻率|Relation_Set[i,k]。(5)對每一篇文檔Di,DiIRetrieval_Result_Se。(6)對每個概念Cij,CijIConcept_Set[i]。(7)計算Cij的權重因子ConceptValueij。(8)對每個關系Rik,RikIRelation_Set[i]。(9)計算Rik的權重因子RelationVauleij。(10)計算該篇文檔語義概念關系權重因子SW_Factori→EjIn1kIn2(ConceptValueij+RelationVa-lueik)其中n1為Di概念數(shù),n2為Di關系數(shù)。(11)SW_Factori→SW_Factor_Set[i],i→Number-OfDoc[i]。(12)利用排序算法對SW_Factor_Set[i]與Num-berOfDoc[i]排序。(13)如果SW_Factor_Set[i]中有相同項。(14)將相同項取出→局部排序子集Sub_Seth[l],其中h為子集個數(shù),l為子集中所含文檔序號,并記錄相同權重因子子集位置。(15)對于ChjIConcept_Set[h,j]與RhkIRelation_Set[h,k]中互不相同的概念和關系,計算其綜合權重值,即語義熵中的pc(x)。(16)TChj→TF_C_Se,tTRhk→TF_R_SetTChj=EiFCijEiEjFCijTRhk=EjFRjkEjEkFRjk上式表示概念j及關系k在所有檢索集中的統(tǒng)計分布。(17)對于每個子集S_SetsISub_Seth[l],sIh。(18)調用Re_rank_Func(S_Se,tTF_C_Se,tTF_R_Set)。(19)將重排結果插入上述排序。(20)返回用戶.調用函數(shù)如下所示:Re_rank_Func(S_Sets,TF_C_Se,tTF_R_Set).(21)對于每篇文檔Dt,DtIS_Seti,t為文檔號。(22)計算語義信息熵SHt=-ETCtj1lg(FCtjEjFCtj)其中,FCijEjFCtj表示概念在該篇文檔中出現(xiàn)次數(shù)與該文檔概念出現(xiàn)總數(shù)比值,即p(x),而TCtj則表示該概念在所有檢索集合中出現(xiàn)的次數(shù)與檢索集合中出現(xiàn)的所有概念次數(shù)的比值。(23)對S_Sets進行排序。(24)返回索引排序集完成排序。5.4.3語義排序部分代碼/** *1,設計緩存 *Map<String,List<String>> *2,設計讀取策略 */ privatestaticMap<String,TNews>newsMap=newHashMap<String,TNews>(); @PostConstruct privatevoidinit(){ getNewsInfo(); } @SuppressWarnings("unchecked") privateList<TNews>getNewsInfoFromDB(){ Stringhql="fromTNews"; List<TNews>newsList=newsDAO.getHibernateTemplate().find(hql); returnnewsList; } privateMap<String,TNews>getNewsInfo(){ List<TNews>newsList=getNewsInfoFromDB(); Map<String,TNews>newsMap=newHashMap<String,TNews>(); for(TNewsnewsInfo:newsList){ StringnewsTitle=newsInfo.getNewsTitle(); newsMap.put(newsTitle,newsInfo); } returnnewsMap; } /*排序*/ /*1,時間加權因子*/ privateDategetNewsDate(StringnewsTitle){ Datedate=newsMap.get(newsTitle).getNewsDate(); returndate; } /*2,語義關系權重*/ privateStringgetNewsRelationWeight(StringnewsTitle){ /**/} /*3,語義信息熵*/ privateStringgetNewsEntropy(StringnewsTitle){ /**/ } //排序算法 publicvoidnewsSorting(StringnewsTitle){ sort(newsTitle); } privateTNewssort(StringnewsTitle){ Stringdate=getNewsDate(newsTitle).toGMTString(); StringrelationWeight=getNewsRelationWeight(newsTitle); StringnewsEntropy=getNewsEntropy(newsTitle); TNewsnews=newTNews(); news.setDate(date); news.setRelationWeight(relationWeight); news.setNewsEntropy(newsEntropy); returnnews; }5.5用戶子模塊在用戶子模塊中,使用了MVC模式。MVC是一種設計模式,它強制性的把應用程序的輸入,處理和輸出分開。MVC把應用程序分成三個核心模塊:模型層、視圖層、和控制器。它們分別擔負不同的任務??刂破鳎河脕斫邮苡脩粽埱?,調用模型層響應用戶請求并選擇視圖顯示響應結果視圖層:顯示模型狀態(tài),接受數(shù)據(jù)更新請求并把用戶輸入數(shù)據(jù)傳給控制器模型層:代表應用程序狀態(tài),響應狀態(tài)查詢處理業(yè)務流程并通知視圖層業(yè)務狀態(tài)更新。本系統(tǒng)中作為模型層的有如下三個類:TNews:代表一個查詢結果的Bean類,其對象的填充是在dao層中,從數(shù)據(jù)庫中查出詳細的產(chǎn)品信息后,對應SearchResult的每個屬性分別填入相應的值。NewsAction:代表保存所有查詢結果的類,這個類有一個ArrayList類型的屬性,它保存了當前返回頁面中所有搜索結果的ID號。而startindex,minpage,maxpage這些屬性則是用于分頁的屬性。HibernateUtil:當用戶在頁面單擊一次搜索按鈕或選擇分頁時,都會調用這個類的共有方法。5.5.1搜索頁面index.jsp是搜索的主頁面,在這個頁面中通過struts適配器處理用戶請求,并調用Service層實現(xiàn)業(yè)務邏,例如分頁和顯示結果列表的功能。Service層中通過NewsAction類來實現(xiàn)業(yè)務邏輯。此類可以接受和返回Tnews對象,并從數(shù)據(jù)庫中取出一個產(chǎn)品詳細信息,然后返回TNews對象。然后將索引結果暫存于自定義緩存中,再采用核心語義排序算法進行排序,將排序后的結果存在緩存中供用戶檢索。5.5.2詳細信息頁面詳細信息頁面用于向用戶展示詳細搜索信息,實現(xiàn)這個功能的頁面是detail.jsp頁面。它通過SearchService從緩存中取出相應的記錄,然后向網(wǎng)頁上寫入已經(jīng)按序排好的詳細信息。5.5.3后臺信息管理后臺信息管理頁面提供給超級用戶信息管理的功能,例如信息的添加、信息的刪除以及修改功能。通過后臺管理平臺,用戶可以針對不同信息種類進行添加和刪除,實現(xiàn)對引擎的后臺管理,彌補當前引擎不能動態(tài)更新的缺點。同時用戶可以通過該頁面進行用戶名和密碼的修改、新聞類別的增刪等操作。如圖所示是后臺管理新聞信息管理界面 圖5-3新聞信息管理頁面6結論“飛夢”搜索引擎系統(tǒng)實現(xiàn)了網(wǎng)頁搜集功能,預處理功能和查詢服務功能,前兩個功能為用戶服務(也就是查詢服務)建立好了網(wǎng)頁索引庫、索引詞表、倒排表,這個交互的過程是通過查詢代理完成的。查詢代理接受用戶的查詢請求,在倒排索引中查找符合要求的文檔返回,并且提供網(wǎng)頁快照功能。搜索引擎技術的發(fā)展前景是廣闊的,浩如煙海的互聯(lián)網(wǎng)信息推動了搜索引擎的普及和應用,從而也促進了搜索引擎技術的蓬勃發(fā)展,這從近幾年來WWW學術年會上總有大量相關論文發(fā)表可見一斑。Google在短短的幾年里在全世界范圍的成功,也在展示搜索引擎技術巨大潛力。但是,搜索引擎技術同時也存在著許多限制,搜索引擎技術應更好地支持動態(tài)網(wǎng)頁,許多蜘蛛軟件不敢去碰動態(tài)網(wǎng)頁,怕被變化無窮的動態(tài)系統(tǒng)黑洞吸進去出不來。然而,網(wǎng)站使用動態(tài)網(wǎng)頁生成工具乃是大事所趨,解決動態(tài)網(wǎng)頁查找的問題已經(jīng)迫在眉睫。如何解決這些難題已成為第三代搜索引擎探索的方向。一個好的搜索引擎不再僅憑借數(shù)據(jù)庫大小、更新頻率、檢索速度、對多語言的支持這幾個基本特性來衡量,隨著數(shù)據(jù)庫容量的不斷膨脹,如何從龐大的資料庫中精確地找到正確的資料,被公認為是下一代搜索技術的競爭要點。“飛夢”搜索引擎技術實現(xiàn)了基于Web的搜索,但它并不是一個完美的設計,其中存在著很多可以改進的地方。(1)如果想維護后臺數(shù)據(jù)庫的內容和索引文件的信息,唯一的方法就是重新對網(wǎng)頁進行處理,然后重建索引,重新插入數(shù)據(jù)庫。因此,需要對后臺維護數(shù)據(jù)庫進行改造??梢约尤胧刈o線程不間斷的抓取新內容,更新索引;(2)抓取時,不能抓取到動態(tài)生成的網(wǎng)頁。這也是當今世界搜索引擎技術所面臨的,急待解決的問題。參考文獻[1]邱哲,符滔滔.Lucene2.0+Heritrix開發(fā)自己的搜索引擎.北京.人民郵電出版社.2007:3-521.[2]邱哲,李剛,宋偉.Ajax+Lucene構建搜索引擎.北京.人民郵電出版社.2006:193-308.[3]李曉明,閆宏飛,王繼民.搜索引擎—原理、技術與系統(tǒng).北京.科學出版社.2004:1-193.[4]佘正平.搜索引擎原理及存在問題.圖書情報論壇.2006,(4)期:1-4.[5]岳清.淺析搜索引擎的原理及發(fā)展前景..2007-1-18.[6]DOUGCUTTING.LuceneinAction.Greenwich.ManningPublicationsCo.2005:1-102.[7]AndreiCioroianu.Useconventionstominimizesetupandconfiguration./developerworks/web/library/wa-aj-simplejava2.html?S_CMP=cn-a-wa&S_TACT=105AGX52,2008-5-20.[8]趙池龍,姜義平,張建.軟件工程實踐教程.北京.電子工業(yè)出版社,2006:160-185.[9]耿祥義.Java基礎教程.北京.清華大學出版社.2004:34-245.[10]BruceEckel.Java編程思想.北京.機械工業(yè)出版社.2002:56-487.[11]JasonPrice.Oracle9iJDBC程序設計(美).北京.機械工業(yè)出版社.2003:37-98.[12]ArtTaylor(美).JDBC數(shù)據(jù)庫編程與J2EE.北京.電子工業(yè)出版社.2004:10-27.[13]劉亞賓,楊紅.精通Eclipse.北京.電子工業(yè)出版社.2005:1-231.[14]孫衛(wèi)琴.Java面向對象編程.第1版.北京.電子工業(yè)出版者,2006:5-543.[15]王克宏,郝建文.Java技術教程(基礎篇).北京.清華大學出版社.2002:89-443.[16]JimD’Anjou,ScottFairbrother,DanKehn.TheJavaDeveloper’sGuidetoEclipe2ndEdition.NewYork.PearsonEduction,Inc.2005:1-162.[17]JohannesD?llingOntologicaldomains,semanticsortsandsystematicambiguityOriginalResearchArticle.InternationalJournalofHuman-ComputerStudies,Volume43,Issues5–6,November1995,Pages785-807.致謝最后再次感謝學校,感謝學院,感謝老師及同學們對我的支持和幫助,通過這次畢業(yè)設計,我的編程能力,設計能力,特別是自學能力有了巨大的提高,增添了信心,讓我在大學生活中留下了美好的一頁!今后,我一定會更加努力!基于C8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)\

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論