freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)(編輯修改稿)

2025-07-20 07:09 本頁面
 

【文章內(nèi)容簡介】 ge(HTTP page)。public void pletePage(HTTP page,boolean error)。public boolean getRemoveQuery()。public void SpiderComplete()。}程序擴(kuò)展流程圖如下所示:把 URL 加入等待隊(duì)列Spider 程序工作完成等待隊(duì)列中是否有 URL?否下載從等待隊(duì)列中得到的網(wǎng)頁,并將他送入運(yùn)行隊(duì)列中。是這個(gè)網(wǎng)頁包含其他超級連接嗎?將這一網(wǎng)頁送入完成隊(duì)列并繼續(xù)查看網(wǎng)頁上的下一個(gè)超連接是否為指向Web 的連接?報(bào)告其他類型連接連接是否與網(wǎng)頁所在主機(jī)不同且只處理本地連接?報(bào)告外部連接報(bào)告網(wǎng)頁連接將連接加入等候隊(duì)列否是否是否是 如何提高程序性能Inter 中擁有海量的 Web 頁面,如果開發(fā)出高效的 Spider 程序是非常重要的。下面就來介紹下幾種提高性能的技術(shù):(1)Java 的多線程技術(shù)線程是通過程序的一條執(zhí)行路線。多線程是一個(gè)程序同時(shí)運(yùn)行多個(gè)任務(wù)的能力。它是在一個(gè)程序的內(nèi)部進(jìn)行分工合作。優(yōu)化程序的通常方法是確定瓶頸并改進(jìn)他。瓶頸是一個(gè)程序中最慢的部分,他限制了其他任務(wù)的運(yùn)行。據(jù)個(gè)例子說明:一個(gè) Spider 程序需要下載十個(gè)頁面,要完成這一任務(wù),程序必須向服務(wù)器發(fā)出請求然后接受這些網(wǎng)頁。當(dāng)程序等待響應(yīng)的時(shí)候其他任務(wù)不能執(zhí)行,這就影響了程序的效率。如果用多線程技術(shù)可以讓這些網(wǎng)頁的等待時(shí)間合在一起,不用互相影響,這就可以極大的改進(jìn)程序性能。(2)數(shù)據(jù)庫技術(shù)當(dāng) Spider 程序訪問一個(gè)大型 Web 站點(diǎn)時(shí),必須使用一種有效的方法來存儲(chǔ)站點(diǎn)隊(duì)列。這些隊(duì)列管理 Spider 程序必須維護(hù)大型網(wǎng)頁的列表。如果把他們放在內(nèi)存中將會(huì)是性能下降,所以我們可以把他們放在數(shù)據(jù)庫中減少系統(tǒng)資源的消耗。 網(wǎng)絡(luò)機(jī)器人的代碼分析程序結(jié)構(gòu)圖如下: 程序代碼實(shí)現(xiàn)如下:package news。import 。import 。import 。import 。import 。import 。/** * 構(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(_searcher, new HTTPSocket(), 100, wl)。 (100)。 ()。 }// 發(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 foundExternalLink(String url) { return false。 }// 當(dāng)發(fā)現(xiàn)其他連接時(shí)調(diào)用這個(gè)方法。其他連接指的是非 HTML 網(wǎng)頁,可能是 Email 或者FTP public boolean foundOtherLink(String url) { return false。 }// 用于處理網(wǎng)頁,這是 Spider 程序要完成的實(shí)際工作。 public void processPage(HTTP ) { (掃描網(wǎng)頁: + ())。 new HTMLParse().start()。 }// 用來請求一個(gè)被處理的網(wǎng)頁。 public void pletePage(HTTP , boolean error) { }// 由 Spider 程序調(diào)用以確定查詢字符串是否應(yīng)刪除。如果隊(duì)列中的字符串應(yīng)當(dāng)刪除,方法返回真。 public boolean getRemoveQuery() { return true。 }// 當(dāng) Spider 程序沒有剩余的工作時(shí)調(diào)用這個(gè)方法。 public void spiderComplete() { }}3 基于 lucene 的索引與搜索、tomcat 服務(wù)器 什么是 Lucene 全文檢索Lucene 是 Jakarta Apache 的開源項(xiàng)目。它是一個(gè)用 Java 寫的全文索引引擎工具包,可以方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對應(yīng)用的全文索引/檢索功能。 Lucene 的原理分析 客戶端設(shè)計(jì)一個(gè)良好的查詢界面非常重要,例如 Googl 就以她簡潔的查詢界面而聞名。我在設(shè)計(jì)的時(shí)候也充分考慮了實(shí)用性和簡潔性。查詢界面截圖如下:搜索結(jié)果截圖如下: 全文檢索的實(shí)現(xiàn)機(jī)制Lucene 的 API 接口設(shè)計(jì)的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫的表==記錄==字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫等都可以比較方便的映射到Lucene 的存儲(chǔ)結(jié)構(gòu)和接口中??傮w上看:可以先把 Lucene 當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫系統(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:查詢結(jié)果集,由匹配的 Document 組成 Lucene 的索引效率通常書籍后面常常附關(guān)鍵詞索引表(比如:北京:12, 34 頁,上海:3,77頁……) ,它能夠幫助讀者比較快地找到相關(guān)內(nèi)容的頁碼。而數(shù)據(jù)庫索引能夠大大提高查詢的速度原理也是一樣,想像一下通過書后面的索引查找的速度要比一頁一頁地翻內(nèi)容高多少倍……而索引之所以效率高,另外一個(gè)原因是它是排好序的。對于檢索系統(tǒng)來說核心是一個(gè)排序問題。由于數(shù)據(jù)庫索引不是為全文索引設(shè)計(jì)的,因此,使用 like %keyword%時(shí),數(shù)據(jù)庫索引是不起作用的,在使用 like 查詢時(shí),搜索過程又變成類似于一頁頁翻書的遍歷過程了,所以對于含有模糊查詢的數(shù)據(jù)庫服務(wù)來說,LIKE 對性能的危害是極大的。如果是需要對多個(gè)關(guān)鍵詞進(jìn)行模糊匹配:like%keyword1% and like %keyword2% ...其效率也就可想而知了。所以建立一個(gè)高效檢索系統(tǒng)的關(guān)鍵是建立一個(gè)類似于科技索引一樣的反向索引機(jī)制,將數(shù)據(jù)源(比如多篇文章)排序順序存儲(chǔ)的同時(shí),有另外一個(gè)排好序的關(guān)鍵詞列表,用于存儲(chǔ)關(guān)鍵詞==文章映射關(guān)系,利用這樣的映射關(guān)系索引:[關(guān)鍵詞==出現(xiàn)關(guān)鍵詞的文章編號,出現(xiàn)次數(shù)(甚至包括位置:起始偏移量,結(jié)束偏移量) ,出現(xiàn)頻率],檢索過程就是把模糊查詢變成多個(gè)可以利用索引的精確查詢的邏輯組合的過程。從而大大提高了多關(guān)鍵詞查詢的效率,所以,全文檢索問題歸結(jié)到最后是一個(gè)排序問題。由此可以看出模糊查詢相對數(shù)據(jù)庫的精確查詢是一個(gè)非常不確定的問題,這也是大部分?jǐn)?shù)據(jù)庫對全文檢索支持有限的原因。Lucene 最核心的特征是通過特殊的索引結(jié)構(gòu)實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫不擅長的全文索引機(jī)制,并提供了擴(kuò)展接口,以方便針對不同應(yīng)用的定制??梢酝ㄟ^以下表格對比一下數(shù)據(jù)庫的模糊查詢:  Lucene 全文索引引擎 數(shù)據(jù)庫索引 將數(shù)據(jù)源中的數(shù)據(jù)都通過全文索引一一建立反向索引對于 LIKE 查詢來說,數(shù)據(jù)傳統(tǒng)的索引是根本用不上的。數(shù)據(jù)需要逐個(gè)便利記錄進(jìn)行 GREP 式的模糊匹配,比有索引的搜索速度要有多個(gè)數(shù)量級的下降。匹配效果通過詞元(term)進(jìn)行匹配,通過語言分析接口的實(shí)現(xiàn),可以實(shí)現(xiàn)對中文等非英語的支持。使用:like %% 會(huì)把 herlands也匹配出來,多個(gè)關(guān)鍵詞的模糊匹配:使用 like %%%:就不能匹配詞序顛倒的..匹配度 有匹配度算法,將匹配程度(相似度)比較高的結(jié)果排在前面。沒有匹配程度的控制:比如有記錄中 出現(xiàn) 5 詞和出現(xiàn) 1 次的,結(jié)果是一樣的。結(jié)果輸 通過特別的算法,將最匹配度最高的 返回所有的結(jié)果集,在匹配條目非常多出 頭 100 條結(jié)果輸出,結(jié)果集是緩沖式的小批量讀取的。的時(shí)候(比如上萬條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集。可定制性通過不同的語言分析接口實(shí)現(xiàn),可以方便的定制出符合應(yīng)用需要的索引規(guī)則(包括對中文的支持)沒有接口或接口復(fù)雜,無法定制結(jié)論 高負(fù)載的模糊查詢應(yīng)用,需要負(fù)責(zé)的模糊查詢的規(guī)則,索引的資料量比較大使用率低,模糊匹配規(guī)則簡單或者需要模糊查詢的資料量少 中文切分詞機(jī)制對于中文來說,全文索引首先還要解決一個(gè)語言分析的問題,對于英文來說,語句中單詞之間是天然通過空格分開的,但亞洲語言的中日韓文語句中的字是一
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1