PHP教程.應用執行個體15
來源:互聯網
上載者:User
基於Linux的搜尋引擎實現
搜尋引擎是為使用者提供快速擷取網頁資訊的工具,其主要的功能是系統通過使用者輸入關鍵字,檢索後端網頁資料庫,將相關網頁的連結和摘要資訊反饋給使用者。從搜尋的範圍上一般分為站內網頁搜尋和全域網頁搜尋。隨著網頁數量的急劇增加,搜尋引擎已經成為上網查詢資訊的必須手段,各個大型網站均已經提供網頁資料搜尋服務,並且出現了許多為大型網站提供專業搜尋引擎服務的公司,如為Yahoo提供搜尋服務的Google,為新浪網和263等國內網站提供服務的百度公司等。專業的搜尋服務費用高而免費的搜尋引擎軟體基本都是基於英文的檢索,所以都不太適合Intranet環境(如校園網等)的需要。
搜尋引擎的基本組成一般分為網頁收集程式、網頁後端資料群組織儲存、網頁資料檢索三部分。決定搜尋引擎好壞的關鍵因素是資料查詢的回應時間,即如何組織好滿足全文檢索索引需要的大量網頁資料。
GNU/Linux作為一個優秀的網路作業系統,其發行版本中整合了大量的網路應用軟體,如 Web伺服器(Apache + PHP)、目錄伺服器(OpenLDAP)、指令碼語言(Perl)、網頁收集程式(Wget)等。所以,通過將它們集中進行應用,便可以實現一個簡單、高效的搜尋引擎伺服器。
一、基本組成和使用方法
1、網頁資料收集
Wget程式是一個優秀的網頁收集程式,它採用多線程設計能夠方便地將網站內容鏡像到本地目錄中,並且能夠靈活定製收集網頁的類型、遞迴收集層次、目錄限額、收集時間等。通過專用的收集程式完成網頁的收集工作,既降低了設計的難度又提高了系統的效能。為了減小本機資料的規模,可只收集能夠查詢的html檔案、txt檔案、指令碼程式asp和php只使用預設的結果,而不收集如圖形檔案或是其他的資料檔案。
2、網頁資料過濾
由於html檔案中存在大量的標記,如<body><table>等,這些標記資料沒有實際的搜尋價值,所以加入資料庫前必須對收集的資料進行過濾。Perl作為廣泛使用的指令碼語言,擁有非常強大而豐富的程式庫,可以方便地完成網頁的過濾。通過使用HTML-Parser庫可以方便地提取出網頁中包含的文字資料、標題資料、連結資料等。該程式庫可以在www.cpan.net中下載,並且該網站收集的Perl程式涉及範圍之廣,遠遠超出我們的現象。
3、目錄服務
目錄服務是針對大量資料檢索需要開發的服務,最早出現在X.500協議集中,後來擴充到TCP/IP中發展成為LDAP(Lightweight Directory Acess Protocol)協議,其相關的標準為1995年制定的RFC1777和1997年制定的RFC2251等。LDAP協議已經作為工業標準被Sun、Lotus、微軟等公司廣泛應用到其相關產品中,但是專用的基於Windows平台的目錄伺服器卻較少見,OpenLDAP是免費的運行於Unix系統的目錄伺服器,其產品的效能優秀,已經被許多的Linux發行版本收集(Redhat、Mandrake等),並且提供了包括C、Perl、PHP等的開發介面。