【正文】
頁 共 34 頁 Abstract The resources in the inter are abundant, but it is a difficult job to search some useful information. So a search engine is the best method to solve this problem. This article fist introduces the system structure of search engine based on the inter in detail, then gives a minute explanation form Spider search, engine and web server. In order to understand the technology more deeply, I have programmed a news search engine by myself. The news search engine is explained and searched according to hyperlink from a appointed web page, then indexs every searched information and adds it to the index database. Then after receiving the customers39。 requests from the web server, it soon searchs the right project form the index engine. In the chapter of introducing search engine, it is not only elaborate the core technology, but also bine with the modern code,pictures included, easy to understand. 基于的搜索引擎 第 5 頁 共 34 頁 第一章 引言 面對浩瀚的網(wǎng)絡資源,搜索引擎為所有網(wǎng)上沖浪的用戶提供了一個入口,毫不夸張的說,所有的用戶都可以從搜索出發(fā)到達自己想去的網(wǎng)上任何一個地方。因此它也成為除了電子郵件以外最多人使用的網(wǎng)上服務。 搜索引擎技術(shù)伴隨著 WWW 的發(fā)展是引人注目的。搜索引擎大約經(jīng)歷了三代的更新發(fā)展: 第一代搜索引擎出現(xiàn)于 1994 年。這類搜索引擎一般都索引少于 1, 000, 000個網(wǎng)頁,極少重新搜集網(wǎng)頁并去刷新索引。而且其檢索速度非常慢,一般都要等待 10 秒甚至更長的時間。在實現(xiàn)技術(shù)上也基本沿用較為成熟的 IR( Information Retrieval)、網(wǎng)絡、數(shù)據(jù)庫等技術(shù),相當于利用一些已有技術(shù)實現(xiàn)的一個 WWW上的應用。在 1994 年 3 月到 4 月,網(wǎng)絡爬蟲 World Web Worm (WWWW)平均每天承受大約 1500 次查詢。 大約在 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 次查詢。 2020 年搜索引擎 2020 年大會上,按照 Google 公司總裁 Larry Page 的演講,Google 正在用 3,000 臺運行 Linux 系統(tǒng)的個人電腦在搜集 Web 上的網(wǎng)頁,而且以每天 30 臺的速度向這個微機集群里添加電腦,以保持與網(wǎng)絡的發(fā)展相同步。每臺微機運行多個爬蟲程序搜集網(wǎng)頁的峰值速度是每秒 100個網(wǎng)頁,平均速度是每秒 個網(wǎng)頁,一天可以搜集超過 4, 000, 000 網(wǎng)頁 搜索引擎一詞在國內(nèi)外因特網(wǎng)領(lǐng)域被廣泛 使用,然而他的含義卻不盡相同。在美國搜索引擎通常指的是基于因特網(wǎng)的搜索引擎,他們通過網(wǎng)絡機器人程序收集上千萬到幾億個網(wǎng)頁,并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網(wǎng)搜索引擎包括 First Search、 Google、 HotBot 等。在中國,搜索引擎通常指基于網(wǎng)站目錄的搜索服務或是特定網(wǎng)站的搜索服務,本人這里研基于的搜索引擎 第 6 頁 共 34 頁 究的是基于因特網(wǎng)的搜索技術(shù)。 基于的搜索引擎 第 7 頁 共 34 頁 第二章 搜索引擎的結(jié)構(gòu) 搜索引擎是根據(jù)用戶的查詢請求,按照一定算法從 索引數(shù)據(jù)中查找信息返回給用戶。為了保證用戶查找信息的精度和新鮮度,搜索引擎需要建立并維護一個龐大的索引數(shù)據(jù)庫。一般的搜索引擎由網(wǎng)絡機器人程序、索引與搜索程序、索引數(shù)據(jù)庫等部分組成。 系統(tǒng)結(jié)構(gòu)圖 網(wǎng)絡機器人 網(wǎng)絡機器人也稱為“網(wǎng)絡蜘蛛” (Spider),是一個功能很強的 WEB掃描程序。它可以在掃描 WEB 頁面的同時檢索其內(nèi)的超鏈接并加入掃描隊列等待以后掃描。因為 WEB 中廣泛使用超鏈接,所以一個 Spider 程序理論上可以訪問整個 WEB 頁面。 為了保證網(wǎng)絡機器人 遍歷信息的廣度和深度需要設定一些重要的鏈接并制定相關(guān)的掃描策略。 索引與搜索 網(wǎng)絡機器人將遍歷得到的頁面存放在臨時數(shù)據(jù)庫中,如果通過 SQL 直接查詢WWW 文檔 網(wǎng)絡機器人程序 建立 Lucene 索引 從數(shù)據(jù)庫中搜索信息 Tomcat 服務器 Lucene 索引數(shù)據(jù)庫 WWW 瀏覽器 WWW 瀏覽器 JSP 網(wǎng)絡機器人程序 基于的搜索引擎 第 8 頁 共 34 頁 信息速度將會難以忍受。為了提高檢索效率,需要建立索引,按照倒排文件的格式存放。如果索引不及時跟新的話,用戶用搜索引擎也不能檢索到。 用戶輸入搜索條件后搜索程序?qū)⑼ㄟ^索引數(shù)據(jù)庫進行檢索然后把符合查詢要求的數(shù)據(jù)庫按照一定的策略進行分級排列并且返回給用戶。 Web 服務器 客戶一般通過瀏覽器進行查詢,這就需要系統(tǒng)提供 Web 服務器并且與索引數(shù)據(jù)庫進行 連接??蛻粼跒g覽器中輸入查詢條件, Web 服務器接收到客戶的查詢條件后在索引數(shù)據(jù)庫中進行查詢、排列然后返回給客戶端。 搜索引擎的主要指標有響應時間、召回率、準確率、相關(guān)度等。這些指標決定了搜索引擎的技術(shù)指標。搜索引擎的技術(shù)指標決定了搜索引擎的評價指標。好的搜索引擎應該是具有較快的反應速度和高召回率、準確率的,當然這些都需要搜索引擎技術(shù)指標來保障。 召回率 : 一次搜索結(jié)果中符合用戶要求的數(shù)目與用戶查詢相關(guān)信息的總數(shù)之比 準確率 : 一次搜索結(jié)果中符合用戶要求的數(shù)目與該次搜索結(jié)果總數(shù)之 比 相關(guān)度 : 用戶查詢與搜索結(jié)果之間相似度的一種度量 精確度 : 對搜索結(jié)果的排序分級能力和對垃圾網(wǎng)頁的抗干擾能力 以上對基于因特網(wǎng)的搜索引擎結(jié)構(gòu)和性能指標進行了分析,本人在這些研究的基礎(chǔ)上利用 JavaTM 技術(shù)和一些 Open Source 工具實現(xiàn)了一個簡單的搜索引擎—— 新聞搜索引擎。在接下來的幾章里將會就本人的設計進行詳細的分析。 基于的搜索引擎 第 9 頁 共 34 頁 第三章 網(wǎng)絡機器人 網(wǎng)絡機器人又稱為 Spider 程序,是一種專業(yè)的 Bot 程序。用于查找大量的Web 頁面。它從一個簡單的 Web 頁面上開始 執(zhí)行,然后通過其超鏈接在訪問其他頁面,如此反復理論上可以掃描互聯(lián)網(wǎng)上的所有頁面。 基于因特網(wǎng)的搜索引擎是 Spider 的最早應用。例如搜索巨頭 Google 公司,就利用網(wǎng)絡機器人程序來遍歷 Web 站點,以創(chuàng)建并維護這些大型數(shù)據(jù)庫。 網(wǎng)絡機器人還可以通過掃描 Web 站點的主頁來得到這個站點的文件清單和層次機構(gòu)。還可以掃描出中斷的超鏈接和拼寫錯誤等。 Inter 是建立在很多相關(guān)協(xié)議基礎(chǔ)上的,而更復雜的協(xié)議又建立在系統(tǒng)層協(xié)議之上。 Web 就是建立在 HTTP ( Hypertext Transfer Protocol ) 協(xié)議基礎(chǔ)上,而 HTTP 又是建立在 TCP/IP ( Transmission Control Protocol / Inter Protocol ) 協(xié)議之上,它同時也是一種 Socket 協(xié)議。所以網(wǎng)絡機器人本質(zhì)上是一種基于 Socket 的網(wǎng)絡程序。 如何解析 HTML 因為 Web 中的信息都是建立在 HTML 協(xié)議之上的,所以網(wǎng)絡機器人在檢索網(wǎng)頁時的第一個問題就是如何解析 HTML。在解決如何解析之前,先來介紹下 HTML中 的幾種數(shù)據(jù)。 文本: 除了腳本和標簽之外的所有數(shù)據(jù) 注 釋: 程序員留下的說明文字,對用戶是不可見的 簡單標簽: 由單個表示的 HTML標簽 開始標簽和結(jié)束標簽: 用來控制所包含的 HTML代碼 我們在進行解析的時候不用關(guān)心所有的標簽,只需要對其中幾種重要的進行解析即可。 超連接標簽 超連接定義了 WWW 通過 Inter 鏈接文檔 的功能。他們的主要目的是使用戶能夠任意遷移到新的頁面,這正是網(wǎng)絡機器人最關(guān)心的標簽。 基于的搜索引擎 第 10 頁 共 34 頁 圖像映射標簽 圖像映射是另一種非常重要的標簽。它可以讓用戶通過點擊圖片來遷移到新的頁面中。 表單標簽 表單 是 Web 頁面中 可以輸入數(shù)據(jù)的單元。許多站點讓用戶填寫 數(shù)據(jù)然后通過點擊按鈕來提交內(nèi)容,這就是表單的典型應用。 表格標簽 表格 是 HTML 的構(gòu)成 部分,通常用來格式化存放、顯示數(shù)據(jù)。 我 們在 具體解析這些 HTMl 標簽有兩種方法:通過 JavaTM 中的 Swing 類來解析或者通過 Bot 包中的 HTMLPage 類來解析 ,本人在實際編程中采用后者。 Bot 包中的 HTMLPage 類用來從指定 URL 中讀取數(shù)據(jù)并檢索出有用的信息。下面給出該類幾種重要的方法。 HTMLPage構(gòu)造函數(shù) 構(gòu)造對象并指定用于通訊的 HTTP對象 Public HTMLPage(HTTP ) GetForms方法 獲取最后一次調(diào)用 Open方法檢索到的表單清單 Public Vector getForms() GetHTTP方法 獲取發(fā)送給構(gòu)造函數(shù)的 HTTP對象 Public HTTP getHTTP() GetImage方法 獲取指定頁面的圖片清單 Public Vector getImage() GetLinks方法 獲取指定頁面的連接清單 Public Vector getLinks() Open方法 打開一個頁面并讀入該頁面,若指定了回調(diào)對象則給出所有該對象數(shù)據(jù) Public void open(String url, a) Spider 程序結(jié)構(gòu) 網(wǎng)絡機器人必須從一個網(wǎng)頁遷移到另一個網(wǎng)頁,所以必須找到該頁面上的超連接。程序首先解析網(wǎng)頁的 HTML 代碼,查找該頁面內(nèi)的超連接然后通過遞歸和非遞歸兩種結(jié)