網(wǎng)絡(luò)中的資源非常豐富_第1頁(yè)
網(wǎng)絡(luò)中的資源非常豐富_第2頁(yè)
網(wǎng)絡(luò)中的資源非常豐富_第3頁(yè)
網(wǎng)絡(luò)中的資源非常豐富_第4頁(yè)
網(wǎng)絡(luò)中的資源非常豐富_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄目錄目錄目錄.1摘要摘要.3第一章第一章 引言引言.4第二章第二章 搜索引擎的結(jié)構(gòu)搜索引擎的結(jié)構(gòu).52.1 系統(tǒng)概述.52.2 搜索引擎的構(gòu)成.5網(wǎng)絡(luò)機(jī)器人.5索引與搜索.5 Web 服務(wù)器.62.3 搜索引擎的主要指標(biāo)及分析.62.4 小節(jié).6第三章第三章 網(wǎng)絡(luò)機(jī)器人網(wǎng)絡(luò)機(jī)器人.73.1 什么是網(wǎng)絡(luò)機(jī)器人.73.2 網(wǎng)絡(luò)機(jī)器人的結(jié)構(gòu)分析.7如何解析 HTML.7程序結(jié)構(gòu).8如何構(gòu)造 Spider 程序.9如何提高程序性能.11網(wǎng)絡(luò)機(jī)器人的代碼分析.123.3 小節(jié).14第四章第四章 基于基于 LUCENE 的索引與搜索的索引與搜索.154.1 什么是 LUCENE全文檢索 .154.2

2、LUCENE的原理分析.15全文檢索的實(shí)現(xiàn)機(jī)制.15Lucene 的索引效率.15中文切分詞機(jī)制.174.3 LUCENE與 SPIDER的結(jié)合 .184.4 小節(jié).21第五章第五章 基于基于 TOMCAT 的的 WEB 服務(wù)器服務(wù)器.225.1 什么是基于 TOMCAT的 WEB服務(wù)器.225.2 用戶(hù)接口設(shè)計(jì).22客戶(hù)端設(shè)計(jì).22服務(wù)端設(shè)計(jì).235.3 在 TOMCAT上部署項(xiàng)目.255.4 小節(jié).25第六章第六章 搜索引擎策略搜索引擎策略.266.1 簡(jiǎn)介.266.2 面向主題的搜索策略.26導(dǎo)向詞.26權(quán)威網(wǎng)頁(yè)和中心網(wǎng)頁(yè).276.3 小節(jié).27參考文獻(xiàn)參考文獻(xiàn).28摘要摘要網(wǎng)絡(luò)中的資源

3、非常豐富,但是如何有效的搜索信息卻是一件困難的事情。建立搜索引擎就是解決這個(gè)問(wèn)題的最好方法。本文首先詳細(xì)介紹了基于英特網(wǎng)的搜索引擎的系統(tǒng)結(jié)構(gòu),然后從網(wǎng)絡(luò)機(jī)器人、索引引擎、Web 服務(wù)器三個(gè)方面進(jìn)行詳細(xì)的說(shuō)明。為了更加深刻的理解這種技術(shù),本人還親自實(shí)現(xiàn)了一個(gè)自己的搜索引擎新聞搜索引擎。新聞搜索引擎是從指定的 Web 頁(yè)面中按照超連接進(jìn)行解析、搜索,并把搜索到的每條新聞進(jìn)行索引后加入數(shù)據(jù)庫(kù)。然后通過(guò) Web 服務(wù)器接受客戶(hù)端請(qǐng)求后從索引數(shù)據(jù)庫(kù)中搜索出所匹配的新聞。本人在介紹搜索引擎的章節(jié)中除了詳細(xì)的闡述技術(shù)核心外還結(jié)合了新聞搜索引擎的實(shí)現(xiàn)代碼來(lái)說(shuō)明,圖文并茂、易于理解。AbstractThe re

4、sources in the internet 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 internet in detail, then gives a minute explanation form Spi

5、der 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 da

6、tabase. Then after receiving the customers requests from the web server, it soon searchs the right news form the index engine,In the chapter of introducing search engine, it is not only elaborate the core technology, but also combine with the modern code,pictures included, easy to understand.第一章第一章

7、引言引言面對(duì)浩瀚的網(wǎng)絡(luò)資源,搜索引擎為所有網(wǎng)上沖浪的用戶(hù)提供了一個(gè)入口,毫不夸張的說(shuō),所有的用戶(hù)都可以從搜索出發(fā)到達(dá)自己想去的網(wǎng)上任何一個(gè)地方。因此它也成為除了電子郵件以外最多人使用的網(wǎng)上服務(wù)。搜索引擎技術(shù)伴隨著 WWW 的發(fā)展是引人注目的。搜索引擎大約經(jīng)歷了三代的更新發(fā)展:第一代搜索引擎出現(xiàn)于 1994 年。這類(lèi)搜索引擎一般都索引少于 1,000,000 個(gè)網(wǎng)頁(yè),極少重新搜集網(wǎng)頁(yè)并去刷新索引。而且其檢索速度非常慢,一般都要等待 10 秒甚至更長(zhǎng)的時(shí)間。在實(shí)現(xiàn)技術(shù)上也基本沿用較為成熟的 IR(Information Retrieval) 、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等技術(shù),相當(dāng)于利用一些已有技術(shù)實(shí)現(xiàn)的一個(gè)

8、WWW 上的應(yīng)用。在 1994 年 3 月到 4 月,網(wǎng)絡(luò)爬蟲(chóng) World Web Worm (WWWW)平均每天承受大約 1500 次查詢(xún)。大約在 1996 年出現(xiàn)的第二代搜索引擎系統(tǒng)大多采用分布式方案(多個(gè)微型計(jì)算機(jī)協(xié)同工作)來(lái)提高數(shù)據(jù)規(guī)模、響應(yīng)速度和用戶(hù)數(shù)量,它們一般都保持一個(gè)大約 50,000,000 網(wǎng)頁(yè)的索引數(shù)據(jù)庫(kù),每天能夠響應(yīng) 10,000,000 次用戶(hù)檢索請(qǐng)求。1997 年 11 月,當(dāng)時(shí)最先進(jìn)的幾個(gè)搜索引擎號(hào)稱(chēng)能建立從 2,000,000 到 100,000,000 的網(wǎng)頁(yè)索引。Altavista 搜索引擎聲稱(chēng)他們每天大概要承受 20,000,000 次查詢(xún)。2000 年搜

9、索引擎 2000 年大會(huì)上,按照 Google 公司總裁 Larry Page 的演講,Google 正在用 3,000 臺(tái)運(yùn)行 Linux 系統(tǒng)的個(gè)人電腦在搜集 Web 上的網(wǎng)頁(yè),而且以每天 30 臺(tái)的速度向這個(gè)微機(jī)集群里添加電腦,以保持與網(wǎng)絡(luò)的發(fā)展相同步。每臺(tái)微機(jī)運(yùn)行多個(gè)爬蟲(chóng)程序搜集網(wǎng)頁(yè)的峰值速度是每秒 100 個(gè)網(wǎng)頁(yè),平均速度是每秒 48.5 個(gè)網(wǎng)頁(yè),一天可以搜集超過(guò)4,000,000 網(wǎng)頁(yè)搜索引擎一詞在國(guó)內(nèi)外因特網(wǎng)領(lǐng)域被廣泛使用,然而他的含義卻不盡相同。在美國(guó)搜索引擎通常指的是基于因特網(wǎng)的搜索引擎,他們通過(guò)網(wǎng)絡(luò)機(jī)器人程序收集上千萬(wàn)到幾億個(gè)網(wǎng)頁(yè),并且每一個(gè)詞都被搜索引擎索引,也就是我們說(shuō)

10、的全文檢索。著名的因特網(wǎng)搜索引擎包括 First Search、Google、HotBot 等。在中國(guó),搜索引擎通常指基于網(wǎng)站目錄的搜索服務(wù)或是特定網(wǎng)站的搜索服務(wù),本人這里研究的是基于因特網(wǎng)的搜索技術(shù)。第二章第二章 搜索引擎的結(jié)構(gòu)搜索引擎的結(jié)構(gòu)2.12.1 系統(tǒng)概述系統(tǒng)概述 搜索引擎是根據(jù)用戶(hù)的查詢(xún)請(qǐng)求,按照一定算法從索引數(shù)據(jù)中查找信息返回給用戶(hù)。為了保證用戶(hù)查找信息的精度和新鮮度,搜索引擎需要建立并維護(hù)一個(gè)龐大的索引數(shù)據(jù)庫(kù)。一般的搜索引擎由網(wǎng)絡(luò)機(jī)器人程序、索引與搜索程序、索引數(shù)據(jù)庫(kù)等部分組成。系統(tǒng)結(jié)構(gòu)圖2.22.2 搜索引擎的構(gòu)成搜索引擎的構(gòu)成 網(wǎng)絡(luò)機(jī)器人也稱(chēng)為“網(wǎng)絡(luò)蜘蛛”(Spider),

11、是一個(gè)功能很強(qiáng)的 WEB 掃描程序。它可以在掃描 WEB 頁(yè)面的同時(shí)檢索其內(nèi)的超鏈接并加入掃描隊(duì)列等待以后掃描。因?yàn)?WEB 中廣泛使用超鏈接,所以一個(gè) Spider 程序理論上可以訪(fǎng)問(wèn)整個(gè) WEB 頁(yè)面。 為了保證網(wǎng)絡(luò)機(jī)器人遍歷信息的廣度和深度需要設(shè)定一些重要的鏈接并制定相關(guān)的掃描策略。 網(wǎng)絡(luò)機(jī)器人將遍歷得到的頁(yè)面存放在臨時(shí)數(shù)據(jù)庫(kù)中,如果通過(guò) SQL 直接查詢(xún)信息速度將會(huì)難以忍受。為了提高檢索效率,需要建立索引,按照倒排文件的格式存放。如果索引不及時(shí)跟新的話(huà),用戶(hù)用搜索引擎也不能檢索到。 用戶(hù)輸入搜索條件后搜索程序?qū)⑼ㄟ^(guò)索引數(shù)據(jù)庫(kù)進(jìn)行檢索然后把符合查詢(xún)要求的數(shù)據(jù)WWW文檔網(wǎng)絡(luò)機(jī)器人程序建立

12、Lucene 索引從數(shù)據(jù)庫(kù)中搜索信息Tomcat 服務(wù)器Lucene 索引數(shù)據(jù)庫(kù)WWW 瀏覽器WWW 瀏覽器JSP網(wǎng)絡(luò)機(jī)器人程序庫(kù)按照一定的策略進(jìn)行分級(jí)排列并且返回給用戶(hù)。 Web 服務(wù)器服務(wù)器 客戶(hù)一般通過(guò)瀏覽器進(jìn)行查詢(xún),這就需要系統(tǒng)提供 Web 服務(wù)器并且與索引數(shù)據(jù)庫(kù)進(jìn)行連接??蛻?hù)在瀏覽器中輸入查詢(xún)條件,Web 服務(wù)器接收到客戶(hù)的查詢(xún)條件后在索引數(shù)據(jù)庫(kù)中進(jìn)行查詢(xún)、排列然后返回給客戶(hù)端。2.32.3 搜索引擎的主要指標(biāo)及分析搜索引擎的主要指標(biāo)及分析 搜索引擎的主要指標(biāo)有響應(yīng)時(shí)間、召回率、準(zhǔn)確率、相關(guān)度等。這些指標(biāo)決定了搜索引擎的技術(shù)指標(biāo)。搜索引擎的技術(shù)指標(biāo)決定了搜索引擎的評(píng)價(jià)指標(biāo)。好的搜索引

13、擎應(yīng)該是具有較快的反應(yīng)速度和高召回率、準(zhǔn)確率的,當(dāng)然這些都需要搜索引擎技術(shù)指標(biāo)來(lái)保障。召回率召回率:一次搜索結(jié)果中符合用戶(hù)要求的數(shù)目與用戶(hù)查詢(xún)相關(guān)信息的總數(shù)之比準(zhǔn)確率準(zhǔn)確率:一次搜索結(jié)果中符合用戶(hù)要求的數(shù)目與該次搜索結(jié)果總數(shù)之比相關(guān)度相關(guān)度:用戶(hù)查詢(xún)與搜索結(jié)果之間相似度的一種度量精確度精確度:對(duì)搜索結(jié)果的排序分級(jí)能力和對(duì)垃圾網(wǎng)頁(yè)的抗干擾能力2.42.4 小節(jié)小節(jié) 以上對(duì)基于因特網(wǎng)的搜索引擎結(jié)構(gòu)和性能指標(biāo)進(jìn)行了分析,本人在這些研究的基礎(chǔ)上利用 JavaTM 技術(shù)和一些 Open Source 工具實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的搜索引擎新聞搜索引擎。在接下來(lái)的幾章里將會(huì)就本人的設(shè)計(jì)進(jìn)行詳細(xì)的分析。第三章第三章

14、網(wǎng)絡(luò)機(jī)器人網(wǎng)絡(luò)機(jī)器人3.13.1 什么是網(wǎng)絡(luò)機(jī)器人什么是網(wǎng)絡(luò)機(jī)器人網(wǎng)絡(luò)機(jī)器人又稱(chēng)為 Spider 程序,是一種專(zhuān)業(yè)的 Bot 程序。用于查找大量的 Web 頁(yè)面。它從一個(gè)簡(jiǎn)單的 Web 頁(yè)面上開(kāi)始執(zhí)行,然后通過(guò)其超鏈接在訪(fǎng)問(wèn)其他頁(yè)面,如此反復(fù)理論上可以?huà)呙杌ヂ?lián)網(wǎng)上的所有頁(yè)面。基于因特網(wǎng)的搜索引擎是 Spider 的最早應(yīng)用。例如搜索巨頭 Google 公司,就利用網(wǎng)絡(luò)機(jī)器人程序來(lái)遍歷 Web 站點(diǎn),以創(chuàng)建并維護(hù)這些大型數(shù)據(jù)庫(kù)。網(wǎng)絡(luò)機(jī)器人還可以通過(guò)掃描 Web 站點(diǎn)的主頁(yè)來(lái)得到這個(gè)站點(diǎn)的文件清單和層次機(jī)構(gòu)。還可以?huà)呙璩鲋袛嗟某溄雍推磳?xiě)錯(cuò)誤等。3.23.2 網(wǎng)絡(luò)機(jī)器人的結(jié)構(gòu)分析網(wǎng)絡(luò)機(jī)器人的結(jié)構(gòu)分

15、析 Internet 是建立在很多相關(guān)協(xié)議基礎(chǔ)上的,而更復(fù)雜的協(xié)議又建立在系統(tǒng)層協(xié)議之上。Web 就是建立在 HTTP ( Hypertext Transfer Protocol ) 協(xié)議基礎(chǔ)上,而 HTTP 又是建立在TCP/IP ( Transmission Control Protocol / Internet Protocol ) 協(xié)議之上,它同時(shí)也是一種Socket 協(xié)議。所以網(wǎng)絡(luò)機(jī)器人本質(zhì)上是一種基于 Socket 的網(wǎng)絡(luò)程序。HTML因?yàn)?Web 中的信息都是建立在 HTML 協(xié)議之上的,所以網(wǎng)絡(luò)機(jī)器人在檢索網(wǎng)頁(yè)時(shí)的第一個(gè)問(wèn)題就是如何解析 HTML。在解決如何解析之前,先來(lái)介紹下

16、 HTML 中的幾種數(shù)據(jù)。文本:文本:除了腳本和標(biāo)簽之外的所有數(shù)據(jù)注釋?zhuān)鹤⑨專(zhuān)撼绦騿T留下的說(shuō)明文字,對(duì)用戶(hù)是不可見(jiàn)的簡(jiǎn)單標(biāo)簽:簡(jiǎn)單標(biāo)簽:由單個(gè)表示的 HTML 標(biāo)簽開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽:開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽:用來(lái)控制所包含的 HTML 代碼我們?cè)谶M(jìn)行解析的時(shí)候不用關(guān)心所有的標(biāo)簽,只需要對(duì)其中幾種重要的進(jìn)行解析即可。超連接標(biāo)簽超連接標(biāo)簽超連接定義了 WWW 通過(guò) Internet 鏈接文檔的功能。他們的主要目的是使用戶(hù)能夠任意遷移到新的頁(yè)面,這正是網(wǎng)絡(luò)機(jī)器人最關(guān)心的標(biāo)簽。圖像映射標(biāo)簽圖像映射標(biāo)簽圖像映射是另一種非常重要的標(biāo)簽。它可以讓用戶(hù)通過(guò)點(diǎn)擊圖片來(lái)遷移到新的頁(yè)面中。表單標(biāo)簽表單標(biāo)簽表單是 Web

17、 頁(yè)面中可以輸入數(shù)據(jù)的單元。許多站點(diǎn)讓用戶(hù)填寫(xiě)數(shù)據(jù)然后通過(guò)點(diǎn)擊按鈕來(lái)提交內(nèi)容,這就是表單的典型應(yīng)用。表格標(biāo)簽表格標(biāo)簽表格是 HTML 的構(gòu)成部分,通常用來(lái)格式化存放、顯示數(shù)據(jù)。我們?cè)诰唧w解析這些 HTMl 標(biāo)簽有兩種方法:通過(guò) JavaTM 中的 Swing 類(lèi)來(lái)解析或者通過(guò) Bot 包中的 HTMLPage 類(lèi)來(lái)解析,本人在實(shí)際編程中采用后者。Bot 包中的 HTMLPage 類(lèi)用來(lái)從指定 URL 中讀取數(shù)據(jù)并檢索出有用的信息。下面給出該類(lèi)幾種重要的方法。HTMLPage 構(gòu)造函數(shù)構(gòu)造函數(shù) 構(gòu)造對(duì)象并指定用于通訊的 HTTP 對(duì)象Public HTMLPage(HTTP http)GetFo

18、rms 方法方法 獲取最后一次調(diào)用 Open 方法檢索到的表單清單Public Vector getForms()GetHTTP 方法方法 獲取發(fā)送給構(gòu)造函數(shù)的 HTTP 對(duì)象Public HTTP getHTTP()GetImage 方法方法 獲取指定頁(yè)面的圖片清單Public Vector getImage()GetLinks 方法方法 獲取指定頁(yè)面的連接清單Public Vector getLinks()Open 方法方法 打開(kāi)一個(gè)頁(yè)面并讀入該頁(yè)面,若指定了回調(diào)對(duì)象則給出所有該對(duì)象數(shù)據(jù)Public void open(String url,HTMLEditorKit.ParserCall

19、back a)SpiderSpider 程序結(jié)構(gòu)程序結(jié)構(gòu)網(wǎng)絡(luò)機(jī)器人必須從一個(gè)網(wǎng)頁(yè)遷移到另一個(gè)網(wǎng)頁(yè),所以必須找到該頁(yè)面上的超連接。程序首先解析網(wǎng)頁(yè)的 HTML 代碼,查找該頁(yè)面內(nèi)的超連接然后通過(guò)遞歸和非遞歸兩種結(jié)構(gòu)來(lái)實(shí)現(xiàn) Spider 程序。遞歸結(jié)構(gòu)遞歸結(jié)構(gòu)遞歸是在一個(gè)方法中調(diào)用自己本身的程序設(shè)計(jì)技術(shù)。雖然比較容易實(shí)現(xiàn)但耗費(fèi)內(nèi)存且不能使用多線(xiàn)程技術(shù),故不適合大型項(xiàng)目。非遞歸結(jié)構(gòu)非遞歸結(jié)構(gòu)這種方法使用隊(duì)列的數(shù)據(jù)結(jié)構(gòu),當(dāng) Spider 程序發(fā)現(xiàn)超連接后并不調(diào)用自己本身而是把超連接加入到等待隊(duì)列中。當(dāng) Spider 程序掃描完當(dāng)前頁(yè)面后會(huì)根據(jù)制定的策略訪(fǎng)問(wèn)隊(duì)列中的下一個(gè)超連接地址。雖然這里只描述了一個(gè)

20、隊(duì)列,但在實(shí)際編程中用到了四個(gè)隊(duì)列,他們每個(gè)隊(duì)列都保存著同一處理狀態(tài)的 URL。等待隊(duì)列等待隊(duì)列 在這個(gè)隊(duì)列中,URL 等待被 Spider 程序處理。新發(fā)現(xiàn)的 URL 也被加入到這個(gè)隊(duì)列中處理隊(duì)列處理隊(duì)列 當(dāng) Spider 程序開(kāi)始處理時(shí),他們被送到這個(gè)隊(duì)列中錯(cuò)誤隊(duì)列錯(cuò)誤隊(duì)列 如果在解析網(wǎng)頁(yè)時(shí)出錯(cuò),URL 將被送到這里。該隊(duì)列中的 URL 不能被移入其他隊(duì)列中完成隊(duì)列完成隊(duì)列 如果解析網(wǎng)頁(yè)沒(méi)有出錯(cuò),URL 將被送到這里。該隊(duì)列中的 URL 不能被移入其它隊(duì)列中在同一時(shí)間 URL 只能在一個(gè)隊(duì)列中,我們把它稱(chēng)為 URL 的狀態(tài)。發(fā)現(xiàn) URL等待隊(duì)列運(yùn)行隊(duì)列完成隊(duì)列錯(cuò)誤隊(duì)列完成 URL以上的圖表

21、示了隊(duì)列的變化過(guò)程,在這個(gè)過(guò)程中,當(dāng)一個(gè) URL 被加入到等待隊(duì)列中時(shí)Spider 程序就會(huì)開(kāi)始運(yùn)行。只要等待隊(duì)列中有一個(gè)網(wǎng)頁(yè)或 Spider 程序正在處理一個(gè)網(wǎng)頁(yè),程序就會(huì)繼續(xù)他的工作。當(dāng)?shù)却?duì)列為空并且當(dāng)前沒(méi)有任何網(wǎng)頁(yè)時(shí),Spider 程序就會(huì)停止它的工作。在構(gòu)造 Spider 程序之前我們先了解下程序的各個(gè)部分是如何共同工作的。以及如何對(duì)這個(gè)程序進(jìn)行擴(kuò)展。流程圖如下所示:把 URL 加入等待隊(duì)列Spider 程序工作完成等待隊(duì)列中是否有 URL?否下載從等待隊(duì)列中得到的網(wǎng)頁(yè),并將他送入運(yùn)行隊(duì)列中。是這個(gè)網(wǎng)頁(yè)包含其他超級(jí)連接嗎?將這一網(wǎng)頁(yè)送入完成隊(duì)列并繼續(xù)查看網(wǎng)頁(yè)上的下一個(gè)超連接是否為指向

22、Web 的連接?報(bào)告其他類(lèi)型連接連接是否與網(wǎng)頁(yè)所在主機(jī)不同且只處理本地連接?報(bào)告外部連接報(bào)告網(wǎng)頁(yè)連接將連接加入等候隊(duì)列否是否是否是IspiderReportable 接口接口這是一個(gè)必須實(shí)現(xiàn)的接口,可以通過(guò)回調(diào)函數(shù)接受 Spider 所遇到的頁(yè)面。接口定義了Spider 向他的控制者發(fā)送的幾個(gè)事件。通過(guò)提供對(duì)每個(gè)事件的處理程序,可以創(chuàng)建各種Spider 程序。下面是他的接口聲明:public interface IspiderReportablepublic boolean foundInternalLink(String url);public boolean foundExternalLi

23、nk(String url);public boolean foundOtherLink(String url);public void processPage(HTTP page);public void completePage(HTTP page,boolean error);public boolean getRemoveQuery();public void SpiderComplete();.4 如何提高程序性能如何提高程序性能Internet 中擁有海量的 Web 頁(yè)面,如果開(kāi)發(fā)出高效的 Spider 程序是非常重要的。下面就來(lái)介紹下幾種提高性能的技術(shù):Java

24、的多線(xiàn)程技術(shù)的多線(xiàn)程技術(shù)線(xiàn)程是通過(guò)程序的一條執(zhí)行路線(xiàn)。多線(xiàn)程是一個(gè)程序同時(shí)運(yùn)行多個(gè)任務(wù)的能力。它是在一個(gè)程序的內(nèi)部進(jìn)行分工合作。優(yōu)化程序的通常方法是確定瓶頸并改進(jìn)他。瓶頸是一個(gè)程序中最慢的部分,他限制了其他任務(wù)的運(yùn)行。據(jù)個(gè)例子說(shuō)明:一個(gè) Spider 程序需要下載十個(gè)頁(yè)面,要完成這一任務(wù),程序必須向服務(wù)器發(fā)出請(qǐng)求然后接受這些網(wǎng)頁(yè)。當(dāng)程序等待響應(yīng)的時(shí)候其他任務(wù)不能執(zhí)行,這就影響了程序的效率。如果用多線(xiàn)程技術(shù)可以讓這些網(wǎng)頁(yè)的等待時(shí)間合在一起,不用互相影響,這就可以極大的改進(jìn)程序性能。數(shù)據(jù)庫(kù)技術(shù)數(shù)據(jù)庫(kù)技術(shù)當(dāng) Spider 程序訪(fǎng)問(wèn)一個(gè)大型 Web 站點(diǎn)時(shí),必須使用一種有效的方法來(lái)存儲(chǔ)站點(diǎn)隊(duì)列。這些隊(duì)

25、列管理 Spider 程序必須維護(hù)大型網(wǎng)頁(yè)的列表。如果把他們放在內(nèi)存中將會(huì)是性能下降,所以我們可以把他們放在數(shù)據(jù)庫(kù)中減少系統(tǒng)資源的消耗。代碼分析代碼分析程序結(jié)構(gòu)圖如下: 程序代碼實(shí)現(xiàn)如下:package news;/* * 新聞搜索引擎* 計(jì)算機(jī) 99630 沈晨 * 版本 1.0 */import com.heaton.bot.HTTP;import com.heaton.bot.HTTPSocket;import com.heaton.bot.ISpiderReportable;import com.heaton.bot.IWorkloadStorable;import com.heato

26、n.bot.Spider;import com.heaton.bot.SpiderInternalWorkload;/* * 構(gòu)造一個(gè) Bot 程序 */public class Searcher implements ISpiderReportable public static void main(String args) throws Exception IWorkloadStorable wl = new SpiderInternalWorkload(); Searcher _searcher = new Searcher(); Spider _spider = new Spider(

27、_searcher, /news.htm, new HTTPSocket(), 100, wl); _spider.setMaxBody(100); _spider.start(); / 發(fā)現(xiàn)內(nèi)部連接時(shí)調(diào)用,url 表示程序發(fā)現(xiàn)的 URL,若返回 true 則加入作業(yè)中,否則不加入。 public boolean foundInternalLink(String url) return false; / 發(fā)現(xiàn)外部連接時(shí)調(diào)用,url 表示程序所發(fā)現(xiàn)的 URL,若返回 true 則把加入作業(yè)中,否則不加入。 public boolean foundExternalLi

28、nk(String url) return false; / 當(dāng)發(fā)現(xiàn)其他連接時(shí)調(diào)用這個(gè)方法。其他連接指的是非 HTML 網(wǎng)頁(yè),可能是 E-mail 或者 FTP public boolean foundOtherLink(String url) return false; / 用于處理網(wǎng)頁(yè),這是 Spider 程序要完成的實(shí)際工作。 public void processPage(HTTP http) System.out.println(掃描網(wǎng)頁(yè): + http.getURL(); new HTMLParse(http).start(); / 用來(lái)請(qǐng)求一個(gè)被處理的網(wǎng)頁(yè)。 public voi

29、d completePage(HTTP http, boolean error) / 由 Spider 程序調(diào)用以確定查詢(xún)字符串是否應(yīng)刪除。如果隊(duì)列中的字符串應(yīng)當(dāng)刪除,方法返回真。 public boolean getRemoveQuery() return true; / 當(dāng) Spider 程序沒(méi)有剩余的工作時(shí)調(diào)用這個(gè)方法。 public void spiderComplete() 3.33.3 小節(jié)小節(jié)在本章中,首先介紹了網(wǎng)絡(luò)機(jī)器人的基本概念,然后具體分析了 Spider 程序的結(jié)構(gòu)和功能。在最后還結(jié)合具體代碼進(jìn)行了詳細(xì)說(shuō)明。本人在編程中運(yùn)用了 JavaTM 技術(shù),主要涉及到了 net 和

30、 io 兩個(gè)包。此外還用了第三方開(kāi)發(fā)包 Bot(由 Jeff Heaton 提供的開(kāi)發(fā)包) 。第四章第四章 基于基于 lucene 的索引與搜索的索引與搜索4.14.1 什么是什么是 Lucene 全文檢索全文檢索Lucene 是 Jakarta Apache 的開(kāi)源項(xiàng)目。它是一個(gè)用 Java 寫(xiě)的全文索引引擎工具包,可以方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引/檢索功能。4.24.2 Lucene 的原理分析的原理分析全文檢索的實(shí)現(xiàn)機(jī)制全文檢索的實(shí)現(xiàn)機(jī)制Lucene 的 API 接口設(shè)計(jì)的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫(kù)的表=記錄=字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫(kù)等都可以比較方便

31、的映射到 Lucene 的存儲(chǔ)結(jié)構(gòu)和接口中。總體上看:可以先把 Lucene 當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫(kù)系統(tǒng)。索引數(shù)據(jù)源:doc(field1,field2.) doc(field1,field2.) indexer / _ | Lucene Index| - / searcher 結(jié)果輸出:Hits(doc(field1,field2) doc(field1.)Document:一個(gè)需要進(jìn)行索引的“單元”,一個(gè) Document 由多個(gè)字段組成Field:字段Hits:查詢(xún)結(jié)果集,由匹配的 Document 組成 Lucene 的索引效率的索引效率通常書(shū)籍后面常常附關(guān)鍵詞索引表(比如:北京

32、:12, 34 頁(yè),上海:3,77 頁(yè)),它能夠幫助讀者比較快地找到相關(guān)內(nèi)容的頁(yè)碼。而數(shù)據(jù)庫(kù)索引能夠大大提高查詢(xún)的速度原理也是一樣,想像一下通過(guò)書(shū)后面的索引查找的速度要比一頁(yè)一頁(yè)地翻內(nèi)容高多少倍而索引之所以效率高,另外一個(gè)原因是它是排好序的。對(duì)于檢索系統(tǒng)來(lái)說(shuō)核心是一個(gè)排序問(wèn)題。由于數(shù)據(jù)庫(kù)索引不是為全文索引設(shè)計(jì)的,因此,使用 like %keyword%時(shí),數(shù)據(jù)庫(kù)索引是不起作用的,在使用 like 查詢(xún)時(shí),搜索過(guò)程又變成類(lèi)似于一頁(yè)頁(yè)翻書(shū)的遍歷過(guò)程了,所以對(duì)于含有模糊查詢(xún)的數(shù)據(jù)庫(kù)服務(wù)來(lái)說(shuō),LIKE 對(duì)性能的危害是極大的。如果是需要對(duì)多個(gè)關(guān)鍵詞進(jìn)行模糊匹配:like%keyword1% and li

33、ke %keyword2% .其效率也就可想而知了。所以建立一個(gè)高效檢索系統(tǒng)的關(guān)鍵是建立一個(gè)類(lèi)似于科技索引一樣的反向索引機(jī)制,將數(shù)據(jù)源(比如多篇文章)排序順序存儲(chǔ)的同時(shí),有另外一個(gè)排好序的關(guān)鍵詞列表,用于存儲(chǔ)關(guān)鍵詞=文章映射關(guān)系,利用這樣的映射關(guān)系索引:關(guān)鍵詞=出現(xiàn)關(guān)鍵詞的文章編號(hào),出現(xiàn)次數(shù)(甚至包括位置:起始偏移量,結(jié)束偏移量),出現(xiàn)頻率,檢索過(guò)程就是把模糊查詢(xún)變成多個(gè)可以利用索引的精確查詢(xún)的邏輯組合的過(guò)程。從而大大提高了多關(guān)鍵詞查詢(xún)的效率,所以,全文檢索問(wèn)題歸結(jié)到最后是一個(gè)排序問(wèn)題。由此可以看出模糊查詢(xún)相對(duì)數(shù)據(jù)庫(kù)的精確查詢(xún)是一個(gè)非常不確定的問(wèn)題,這也是大部分?jǐn)?shù)據(jù)庫(kù)對(duì)全文檢索支持有限的原因。

34、Lucene 最核心的特征是通過(guò)特殊的索引結(jié)構(gòu)實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫(kù)不擅長(zhǎng)的全文索引機(jī)制,并提供了擴(kuò)展接口,以方便針對(duì)不同應(yīng)用的定制。可以通過(guò)一下表格對(duì)比一下數(shù)據(jù)庫(kù)的模糊查詢(xún):Lucene 全文索引引擎數(shù)據(jù)庫(kù)索引將數(shù)據(jù)源中的數(shù)據(jù)都通過(guò)全文索引一一建立反向索引對(duì)于 LIKE 查詢(xún)來(lái)說(shuō),數(shù)據(jù)傳統(tǒng)的索引是根本用不上的。數(shù)據(jù)需要逐個(gè)便利記錄進(jìn)行 GREP式的模糊匹配,比有索引的搜索速度要有多個(gè)數(shù)量級(jí)的下降。匹配效果通過(guò)詞元(term)進(jìn)行匹配,通過(guò)語(yǔ)言分析接口的實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)中文等非英語(yǔ)的支持。使用:like %net% 會(huì)把 netherlands也匹配出來(lái),多個(gè)關(guān)鍵詞的模糊匹配:使用 like %co

35、m%net%:就不能匹配詞序顛倒的匹配度有匹配度算法,將匹配程度(相似度)比較高的結(jié)果排在前面。沒(méi)有匹配程度的控制:比如有記錄中 net 出現(xiàn)5 詞和出現(xiàn) 1 次的,結(jié)果是一樣的。結(jié)果輸出通過(guò)特別的算法,將最匹配度最高的頭返回所有的結(jié)果集,在匹配條目非常多的時(shí)候100 條結(jié)果輸出,結(jié)果集是緩沖式的小批量讀取的。(比如上萬(wàn)條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集。可定制性通過(guò)不同的語(yǔ)言分析接口實(shí)現(xiàn),可以方便的定制出符合應(yīng)用需要的索引規(guī)則(包括對(duì)中文的支持)沒(méi)有接口或接口復(fù)雜,無(wú)法定制結(jié)論高負(fù)載的模糊查詢(xún)應(yīng)用,需要負(fù)責(zé)的模糊查詢(xún)的規(guī)則,索引的資料量比較大使用率低,模糊匹配規(guī)則簡(jiǎn)單或者需要模糊查詢(xún)的資料

36、量少 中文切分詞機(jī)制中文切分詞機(jī)制對(duì)于中文來(lái)說(shuō),全文索引首先還要解決一個(gè)語(yǔ)言分析的問(wèn)題,對(duì)于英文來(lái)說(shuō),語(yǔ)句中單詞之間是天然通過(guò)空格分開(kāi)的,但亞洲語(yǔ)言的中日韓文語(yǔ)句中的字是一個(gè)字挨一個(gè),所有,首先要把語(yǔ)句中按“詞”進(jìn)行索引的話(huà),這個(gè)詞如何切分出來(lái)就是一個(gè)很大的問(wèn)題。首先,肯定不能用單個(gè)字符作(si-gram)為索引單元,否則查“上?!睍r(shí),不能讓含有“海上”也匹配。但一句話(huà):“北京天安門(mén)”,計(jì)算機(jī)如何按照中文的語(yǔ)言習(xí)慣進(jìn)行切分呢?“北京 天安門(mén)” 還是“北 京 天安門(mén)”?讓計(jì)算機(jī)能夠按照語(yǔ)言習(xí)慣進(jìn)行切分,往往需要機(jī)器有一個(gè)比較豐富的詞庫(kù)才能夠比較準(zhǔn)確的識(shí)別出語(yǔ)句中的單詞。另外一個(gè)解決的辦法是采用自

37、動(dòng)切分算法:將單詞按照 2 元語(yǔ)法(bigram)方式切分出來(lái),比如:北京天安門(mén) = 北京 京天 天安 安門(mén)。這樣,在查詢(xún)的時(shí)候,無(wú)論是查詢(xún)北京 還是查詢(xún)天安門(mén),將查詢(xún)?cè)~組按同樣的規(guī)則進(jìn)行切分:北京,天安安門(mén),多個(gè)關(guān)鍵詞之間按與and的關(guān)系組合,同樣能夠正確地映射到相應(yīng)的索引中。這種方式對(duì)于其他亞洲語(yǔ)言:韓文,日文都是通用的?;谧詣?dòng)切分的最大優(yōu)點(diǎn)是沒(méi)有詞表維護(hù)成本,實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是索引效率低,但對(duì)于中小型應(yīng)用來(lái)說(shuō),基于 2 元語(yǔ)法的切分還是夠用的?;?2 元切分后的索引一般大小和源文件差不多,而對(duì)于英文,索引文件一般只有原文件的 30%-40%不同,自動(dòng)切分自動(dòng)切分詞表切分詞表切分實(shí)現(xiàn)實(shí)現(xiàn)

38、非常簡(jiǎn)單實(shí)現(xiàn)復(fù)雜查詢(xún)?cè)黾恿瞬樵?xún)分析的復(fù)雜程度,適于實(shí)現(xiàn)比較復(fù)雜的查詢(xún)語(yǔ)法規(guī)則存儲(chǔ)效率索引冗余大,索引幾乎和原文一樣大索引效率高,為原文大小的 30左右維護(hù)成本無(wú)詞表維護(hù)成本詞表維護(hù)成本非常高:中日韓等語(yǔ)言需要分別維護(hù)。還需要包括詞頻統(tǒng)計(jì)等內(nèi)容適用領(lǐng)域嵌入式系統(tǒng):運(yùn)行環(huán)境資源有限分布式系統(tǒng):無(wú)詞表同步問(wèn)題多語(yǔ)言環(huán)境:無(wú)詞表維護(hù)成本對(duì)查詢(xún)和存儲(chǔ)效率要求高的專(zhuān)業(yè)搜索引擎4.34.3 Lucene 與與 Spider 的結(jié)合的結(jié)合首先構(gòu)造一個(gè) Index 類(lèi)用來(lái)實(shí)現(xiàn)對(duì)內(nèi)容進(jìn)行索引。代碼分析如下:package news;/* * 新聞搜索引擎* 計(jì)算機(jī) 99630 沈晨 * 版本 1.0 */impo

39、rt java.io.IOException;import .ChineseAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.IndexWriter;public class Index IndexWriter _writer = null; Index() throws Exception _writer = new IndexWriter(c:Newsindex, new ChineseAnaly

40、zer(), true); /* * 把每條新聞加入索引中 * param url 新聞的 url * param title 新聞的標(biāo)題 * throws java.lang.Exception */ void AddNews(String url, String title) throws Exception Document _doc = new Document(); _doc.add(Field.Text(title, title); _doc.add(Field.UnIndexed(url, url); _writer.addDocument(_doc); /* * 優(yōu)化并且清理資

41、源 * throws java.lang.Exception */ void close() throws Exception _writer.optimize(); _writer.close(); 然后構(gòu)造一個(gè) HTML 解析類(lèi),把通過(guò) bot 程序收集的新聞內(nèi)容進(jìn)行索引。代碼分析如下:package news;/* * 新聞搜索引擎* 計(jì)算機(jī) 99630 沈晨 * 版本 1.0 */import java.util.Iterator;import java.util.Vector;import com.heaton.bot.HTMLPage;import com.heaton.bot.H

42、TTP;import com.heaton.bot.Link;public class HTMLParse HTTP _http = null; public HTMLParse(HTTP http) _http = http; /* * 對(duì) Web 頁(yè)面進(jìn)行解析后建立索引 */ public void start() try HTMLPage _page = new HTMLPage(_http); _page.open(_http.getURL(), null); Vector _links = _page.getLinks(); Index _index = new Index(); I

43、terator _it = _links.iterator(); int n = 0; while (_it.hasNext() Link _link = (Link) _it.next(); String _herf = input(_link.getHREF().trim(); String _title = input(_link.getPrompt().trim(); _index.AddNews(_herf, _title); n+; System.out.println(共掃描到 + n + 條新聞); _index.close(); catch (Exception ex) Sy

44、stem.out.println(ex); /* * 解決 java 中的中文問(wèn)題 * param str 輸入的中文 * return 經(jīng)過(guò)解碼的中文 */ public static String input(String str) String temp = null; if (str != null) try temp = new String(str.getBytes(ISO8859_1); catch (Exception e) return temp; 4.44.4 小節(jié)小節(jié)在進(jìn)行海量數(shù)據(jù)搜索時(shí),如果使用單純的數(shù)據(jù)庫(kù)技術(shù),那將是非常痛苦的。速度將是極大的瓶頸。所以本章提出了使用全

45、文搜索引擎 Lucene 進(jìn)行索引、搜索。最后,還結(jié)合了具體代碼說(shuō)明了如何把 Lucene 全文搜索引擎和 Spider 程序互相集合來(lái)實(shí)現(xiàn)新聞搜索的功能。第五章第五章 基于基于 Tomcat 的的 Web 服務(wù)器服務(wù)器5.15.1 什么是基于什么是基于 Tomcat 的的 Web 服務(wù)器服務(wù)器Web 服務(wù)器是在網(wǎng)絡(luò)中為實(shí)現(xiàn)信息發(fā)布、資料查詢(xún)、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器。Web 服務(wù)器如何工作:在 Web 頁(yè)面處理中大致可分為三個(gè)步驟,第一步,Web 瀏覽器向一個(gè)特定的服務(wù)器發(fā)出 Web 頁(yè)面請(qǐng)求;第二步,Web 服務(wù)器接收到 Web 頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的 Web 頁(yè)面,并將所

46、請(qǐng)求的 Web 頁(yè)面?zhèn)魉徒o Web 瀏覽器;第三步,Web 服務(wù)器接收到所請(qǐng)求的 Web 頁(yè)面,并將它顯示出來(lái)。Tomcat 是一個(gè)開(kāi)放源代碼、運(yùn)行 servlet 和 JSP Web 應(yīng)用軟件的基于 Java 的 Web 應(yīng)用軟件容器。Tomcat 由 Apache-Jakarta 子項(xiàng)目支持并由來(lái)自開(kāi)放性源代碼 Java 社區(qū)的志愿者進(jìn)行維護(hù)。Tomcat Server 是根據(jù) servlet 和 JSP 規(guī)范進(jìn)行執(zhí)行的,因此我們就可以說(shuō)Tomcat Server 也實(shí)行了 Apache-Jakarta 規(guī)范且比絕大多數(shù)商業(yè)應(yīng)用軟件服務(wù)器要好。5.25.2 用戶(hù)接口設(shè)計(jì)用戶(hù)接口設(shè)計(jì)一個(gè)良好

47、的查詢(xún)界面非常重要,例如 Googl 就以她簡(jiǎn)潔的查詢(xún)界面而聞名。我在設(shè)計(jì)的時(shí)候也充分考慮了實(shí)用性和簡(jiǎn)潔性。查詢(xún)界面截圖如下: 搜索結(jié)果截圖如下:主要利用 JavaTM Servlet 技術(shù)實(shí)現(xiàn),用戶(hù)通過(guò) GET 方法從客戶(hù)端向服務(wù)端提交查詢(xún)條件,服務(wù)端通過(guò) Tomcat 的 Servlet 容器接受并分析提交參數(shù),再調(diào)用 lucene 的開(kāi)發(fā)包進(jìn)行搜索操作。最后把搜索的結(jié)果以 HTTP 消息包的形式發(fā)送至客戶(hù)端,從而完成一次搜索操作。服務(wù)端 Servlet 程序的結(jié)構(gòu)如下:實(shí)現(xiàn)的關(guān)鍵代碼如下:public void Search(String qc, PrintWriter out) thr

48、ows Exception / 從索引目錄創(chuàng)建索引 IndexSearcher _searcher = new IndexSearcher(c:newsindex); / 創(chuàng)建標(biāo)準(zhǔn)分析器 Analyzer analyzer = new ChineseAnalyzer(); / 查詢(xún)條件 String line = qc; / Query 是一個(gè)抽象類(lèi) Query query = QueryParser.parse(line, title, analyzer); out.println(); out.println(搜索結(jié)果); out.println(); out.println( + + 新

49、聞搜索引擎: + + + ); out.println(搜索關(guān)鍵字: + query.toString(title) + ); Hits hits = _searcher.search(query); out.println( 總共找到 + hits.length() + 條新聞); final int HITS_PER_PAGE = 10; for (int start = 0; start hits.length(); start += HITS_PER_PAGE) int end = Math.min(hits.length(), start + HITS_PER_PAGE); for

50、(int i = start; i end; i+) Document doc = hits.doc(i); String url = doc.get(url); if (url != null) out.println( (i + 1) + + replace(doc.get(title), qc) + ); else System.out.println(沒(méi)有找到!); out.println(); _searcher.close(); ;5.35.3 在在 Tomcat 上部署項(xiàng)目上部署項(xiàng)目Tomcat 中的應(yīng)用程序是一個(gè) WAR(Web Archive)文件。WAR 是 Sun 提出的

51、一種Web 應(yīng)用程序格式,與 JAR 類(lèi)似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來(lái)組織:通常其根目錄下包含有 Html 和 Jsp 文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè) WEB-INF 目錄,這個(gè)目錄很重要。通常在 WEB-INF 目錄下有一個(gè) web.xml 文件和一個(gè) classes 目錄,web.xml 是這個(gè)應(yīng)用的配置文件,而 classes 目錄下則包含編譯好的Servlet 類(lèi)和 Jsp 或 Servlet 所依賴(lài)的其它類(lèi)(如 JavaBean) 。通常這些所依賴(lài)的類(lèi)也可以打包成 JAR 放到 WEB-INF 下的 lib 目錄下,當(dāng)然也可以放到系統(tǒng)的 C

52、LASSPATH 中。在 Tomcat 中,應(yīng)用程序的部署很簡(jiǎn)單,你只需將你的 WAR 放到 Tomcat 的 webapp 目錄下,Tomcat 會(huì)自動(dòng)檢測(cè)到這個(gè)文件,并將其解壓。你在瀏覽器中訪(fǎng)問(wèn)這個(gè)應(yīng)用的 Jsp 時(shí),通常第一次會(huì)很慢,因?yàn)?Tomcat 要將 Jsp 轉(zhuǎn)化為 Servlet 文件,然后編譯。編譯以后,訪(fǎng)問(wèn)將會(huì)很快。5.45.4 小節(jié)小節(jié)本章中詳細(xì)介紹了如何構(gòu)架基于 Tomcat 的 Web 服務(wù)器,使得用戶(hù)通過(guò)瀏覽器進(jìn)行新聞的搜索,最后還對(duì) Tomcat 如何部署進(jìn)行了說(shuō)明。第六章第六章 搜索引擎策略搜索引擎策略6.16.1 簡(jiǎn)介簡(jiǎn)介隨著信息多元化的增長(zhǎng),千篇一律的給所有用戶(hù)同一個(gè)入口顯然已經(jīng)不能滿(mǎn)足特定用戶(hù)更深入的查詢(xún)需求。同時(shí),這樣的通用搜索引擎在目前的硬件條件下,要及時(shí)更新以得到互聯(lián)網(wǎng)上較全面的信息是不太可能的。針對(duì)這種情況,我們需要一個(gè)分類(lèi)細(xì)致精確、數(shù)據(jù)全面深入、更新及時(shí)的面向主題的搜索引擎。由于主題搜索運(yùn)用了人工分類(lèi)以及特征提取等智能化策略,因此它比上面提到的前三代的搜索引擎將更加有效和準(zhǔn)確,我們將這類(lèi)完善的主題搜索引擎稱(chēng)為第四代搜索引擎。6.26.2 面向主題的搜索策略

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論