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

正文內(nèi)容

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

2024-12-23 21:52 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 2020年初, IA 的目的是開發(fā) 一個(gè)特殊的爬蟲,對(duì)網(wǎng)上的資源進(jìn)行歸檔,建立網(wǎng)絡(luò)數(shù)字圖書館,在過去的 6 年里,IA 已經(jīng)建立了 400TB 的數(shù)據(jù)。 Heritrix 主要有三大部件:范圍部件,邊界部件,處理器鏈 。 范圍部件:主要按照規(guī)則決定將哪個(gè) URI 入隊(duì)。 邊界部件:跟蹤哪個(gè)預(yù)定的 URI 將被收集,和已經(jīng)被收集的 URI,選擇下一個(gè) URI,剔除已經(jīng)處理過的 URI。 處理器鏈:包含若干處理器獲取 URI,分析結(jié)果,將它們傳回給邊界部件 。 Heritrix 包含以下關(guān)鍵特性: 。 2。從一個(gè)提供的種子進(jìn)行爬,收集站點(diǎn)內(nèi)的精確 URI,和精確主機(jī)。 3。主要是用廣度優(yōu)先算法進(jìn)行處理。 7 4。主要部件都是高效的可擴(kuò)展的 5。良好的配置,包括: a。可設(shè)置輸出日志,歸檔文件和臨時(shí)文件的位置 b??稍O(shè)置下載的最大字節(jié),最大數(shù)量的下載文檔,和最大的下載時(shí)間。 c??稍O(shè)置工作線程數(shù)量。 d??稍O(shè)置所利用的帶寬的上界。 e??稍谠O(shè)置之后一定時(shí)間重新選擇。 f。包含一些可設(shè)置的過濾機(jī)制,表達(dá)方式, URI 路徑深度選擇等等。 Heritrix 的局限: 1。單實(shí)例的爬蟲,之間不能進(jìn)行合作。 2。在有限的機(jī)器資源的情況下,卻要復(fù)雜的操作。 3。只有官方支持,僅僅在 Linux 上進(jìn)行了測(cè)試。 4。每個(gè)爬蟲是單獨(dú)進(jìn)行工作的,沒有對(duì)更新進(jìn)行修訂。 5。在硬件和系統(tǒng)失敗時(shí),恢復(fù)能力很差。 3 系統(tǒng)設(shè)計(jì) 系統(tǒng)實(shí)現(xiàn)流程圖 設(shè) 計(jì) 人 員選 擇 圖 書 信 息 來源 網(wǎng) 站 及 網(wǎng) 頁(yè)相 關(guān) 網(wǎng) 站 內(nèi) 容 和 網(wǎng)頁(yè) 分 析定 向 下 載 相 關(guān) 網(wǎng) 站的 圖 書 網(wǎng) 頁(yè) 內(nèi) 容網(wǎng) 頁(yè) 內(nèi) 容 提 取 和 正則 表 達(dá) 式 分 析建 立 網(wǎng) 頁(yè) 內(nèi) 容 索 引設(shè) 計(jì) 前 臺(tái) 頁(yè) 面 提供 搜 索檢 索 用 戶圖 系統(tǒng)實(shí)現(xiàn)流程圖 8 系統(tǒng)順序圖 圖 系統(tǒng)順序圖 9 系統(tǒng)狀態(tài)圖 圖 體統(tǒng)狀態(tài)圖 數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)建立 圖書信息數(shù)據(jù)庫(kù)只需完成對(duì)于讀書相關(guān)信息的存儲(chǔ),所以比較簡(jiǎn)單, 只需建立 bookInfo 表,如下表:表 數(shù)據(jù)庫(kù)設(shè)計(jì)表 列名 數(shù)據(jù)類型 允許空 是否主鍵 id int 非 主鍵 name varchar(50) 非 type varchar(50) content varchar(MAX) url varchar(50) imageurl varchar(50) updatetime varchar(64) 10 數(shù)據(jù)庫(kù) 連接 開 始J D B C 建 立 數(shù)據(jù) 庫(kù) 連 接是 否 完 成信 息 添 加關(guān) 閉 數(shù) 據(jù) 庫(kù) 連接向 數(shù) 據(jù) 庫(kù) 添 加產(chǎn) 品 信 息結(jié) 束是否圖 數(shù)據(jù)庫(kù)表結(jié)構(gòu)圖 一、裝入 JDBC 驅(qū)動(dòng)程序 DriverManager 類管理各種數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,建立新的數(shù)據(jù)庫(kù)連接,以便將 Java 應(yīng)用程序能夠使用正確的 JDBC 驅(qū)動(dòng)程序。 DriverManager 類包含一系列 Driver 類,它們通過調(diào)用方法 對(duì)自己進(jìn)行了注冊(cè)。所有 Driver 類都必須包含有一個(gè)靜態(tài)方法,利用這個(gè)靜態(tài)方法可以創(chuàng)建該類的實(shí)例,然后在加載該實(shí)例時(shí)向 DriverManager 類進(jìn)行注冊(cè)。這樣,用戶正常情況下將不會(huì)直接調(diào)用 ,而是在加載驅(qū)動(dòng)程序時(shí) 由驅(qū)動(dòng)程序自動(dòng)調(diào)用。 可以通過調(diào)用方法 (),這種方法可以顯式地加載驅(qū)動(dòng)程序類。如: //裝載并注冊(cè) SQL Server Driver (“”)。 (new ())。 二、建立連接 建立連接需要使用 DriverManager 類的靜態(tài)方法 getConnection(String url,String username,String password)來建立數(shù)據(jù)庫(kù)的連接對(duì)象。其中的三個(gè)參數(shù), url 表示連接數(shù)據(jù)庫(kù)的 JDBC URL, username 表示連接數(shù)據(jù)庫(kù)的用戶名, password 表示連接數(shù)據(jù)庫(kù)的密碼。如: //建立 SQL Server Driver 數(shù)據(jù)庫(kù)連接 String url = “ jdbc:microsoft: 。DatabaseName=test”。 String username = “sa”。 String password = “123456”。 Connection conn = null。 try{ 11 conn = (url,username,password)。 }catch(Exception e){ ()。 } JBDC URL 的一般格式為: jdbc:drivertype//parameters drivertype 表示驅(qū)動(dòng)程序的類型, parameters 通常用來設(shè)定數(shù)據(jù)庫(kù)服務(wù)器的 IP 地址、端口號(hào)以及數(shù)據(jù)庫(kù)名稱。 三、執(zhí)行 SQL 語(yǔ)句 與數(shù)據(jù)庫(kù)建立連接之后,就可以向所連接的數(shù)據(jù)庫(kù)發(fā)送 SQL 語(yǔ)句。 JDBC 提供了 3 個(gè)類,它們由Connection 來創(chuàng)建這些類的對(duì)象。這 3 個(gè)對(duì)象分別是 Statement 對(duì)象, PreparedStatement 對(duì)象,以及CallableStatement 對(duì)象。它們都可以作為執(zhí)行 SQL 語(yǔ)句的容器。每一個(gè)都專用于發(fā)送特定類型的 SQL 語(yǔ)句。 1) Statement 對(duì)象用語(yǔ)執(zhí)行不帶參數(shù)的簡(jiǎn)單 SQL 語(yǔ)句,由方法 createStatement 所創(chuàng)建。 2) PreparedStatement 對(duì)象用語(yǔ)執(zhí)行帶參數(shù)或不帶參數(shù)的預(yù)編譯 SQL 語(yǔ)句,由 PreparedStatement 創(chuàng)建。 PreparedStatement 接口繼承自 Statement 接口,其功能更加的強(qiáng)大。在 PreparedStatement 對(duì)象所使用的 SQL語(yǔ)句中,包含了經(jīng)過預(yù)編譯的 SQL 語(yǔ)句,因此可以獲得更高的執(zhí)行效率,同時(shí)使用起來也更加的方便。在PreparedStatement 對(duì)象所使用的 SQL 語(yǔ)句中,可以包含多個(gè)用 ”?”代表的字段,同時(shí)也可以是哦那個(gè)setXXXX()的方 法來設(shè)置該字段的內(nèi)容,從而增強(qiáng)了程序的動(dòng)態(tài)性。 3) CallableStatement 對(duì)象用于執(zhí)行對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)過程的調(diào)用,由方法 prepareCall 所創(chuàng)建。 CallableStatement用于執(zhí)行 SQL 存儲(chǔ)過程 —— 一組通過名稱來調(diào)用(就像函數(shù)的調(diào)用那樣)的 SQL 語(yǔ)句。 四、檢索結(jié)果 SQL 語(yǔ)句發(fā)送以后,返回的結(jié)果通常存放在一個(gè) ResultSET 類的對(duì)象中,可將 ResultSet 對(duì)象看做一個(gè)表,這個(gè)表中包含由 SQL 返回的列名和相應(yīng)的值, ResultSet 對(duì)象中維持了一個(gè)指向當(dāng)前的指針,通過一系列的 getXXXX()方法,可以檢索當(dāng)前行的各個(gè)列,并顯示出來。 五、關(guān)閉連接 在對(duì)象使用完畢后,應(yīng)當(dāng)使用 close()方法解除與數(shù)據(jù)庫(kù)的連接,并關(guān)閉數(shù)據(jù)庫(kù)。關(guān)閉數(shù)據(jù)庫(kù)的語(yǔ)句為: ()。 索引建立 Lucene的索引過程 從 IndexWriter 的 addDocument 方法開始。在 Lucene 的 API 中, IndexWriter 的主要職責(zé)是向索引中加入文檔,它提供了建立索引的只要外部借口,但是它的具體實(shí)現(xiàn),也就是索引的寫入過程是由 DocumentWriter來完成的。因此,在整個(gè) Lucene中, 最繁瑣的對(duì)數(shù)據(jù)源分詞、計(jì)算出現(xiàn)頻率和位置,以及寫索引過程,實(shí)際上是發(fā)生在 DocumentWriter 中的。在 DocumentWriter中完成了向索引的一些情況進(jìn)行判斷,并作進(jìn)一步的合并索引等操作。其基本流程步驟如下: JE分詞的 MMAnalyzer 的實(shí)例,用于對(duì)文本進(jìn)行中文分詞和文本分隔處理。 12 ,將前面所處理的詞庫(kù)進(jìn)行加載,相關(guān)的文件存儲(chǔ)位置通過項(xiàng)目中的配置管理類實(shí)例 PropertyConfiguration 得到。 addBook方法,以 Book類型的對(duì)象和一個(gè) ID值為參數(shù),調(diào)用 方法處理,生成 Lucene的 Document文檔對(duì)象。 IndexWriter 的 addDocument 方法,加入索引中,完成索引的創(chuàng)建和追加。 除此之外項(xiàng)目中的 BookIndexer類中還提供了 optimize()方法和 close()方法,分別用來對(duì)索引進(jìn)行優(yōu)化和關(guān)閉索引。 索引創(chuàng)建的程序流程圖如圖 : 開 始創(chuàng) 建 J E 分 詞 的M M A n a l y z e r創(chuàng) 建 文 件 讀 取F i l e R e a d e r 并與 分 詞 器 關(guān) 聯(lián)創(chuàng) 建 索 引 寫 入對(duì) 象 I n d e x W r i t e r是 否 完 成 信 息添 加關(guān) 閉 所 有 對(duì) 象連 接結(jié) 束創(chuàng) 建 圖 書D o c u m e n t 文 檔索 引 對(duì) 象添 加 文 檔 到 索引 文 件是否圖 索引創(chuàng)建流程圖 圖書信息綜合處理 項(xiàng)目中需要建立一個(gè)類,把數(shù)據(jù)庫(kù)操作、索引操作都集中起來。首先它要可以從文本文檔中提取出需要的內(nèi)容,來 構(gòu)建 Book對(duì)象;然后調(diào)用 BookJDBC,向數(shù)據(jù)庫(kù)中寫入 Book相關(guān)信息。另外,再調(diào)用 BookIndexer,把 Book對(duì)象加入到索引中。具體的操作步驟如下: BookJDBC 類和 BookIndexer 類,來對(duì)具體的圖書信息進(jìn)行處理。 ,并生成一個(gè) BookTextFileProcessor 的實(shí)例后,需要調(diào)用其 initialize 方法來初始化 BookJDBC 類的實(shí)例和 BookIndexer 的實(shí)例。 setDirectories 方法,為其注入所要處理的圖書詳細(xì)信息文件所在的目錄,然后調(diào)用process 方法開始處理圖書信息。 程序的流程圖如下頁(yè)圖 : 13 開 始向 索 引 中 添 加B o o k 對(duì) 象信 息 存 入 數(shù) 據(jù) 庫(kù)生 成 圖 書 信 息摘 要生 成 一 個(gè)B o o k 對(duì) 象是 否 完 成 信 息 添加優(yōu) 化 索 引結(jié) 束是否遍 歷 目 錄 讀 取圖 書 屬 性 信 息 圖 數(shù)據(jù)庫(kù)、索引綜合處理流程圖 4 系統(tǒng)實(shí)現(xiàn) 使用 Heritrix 抓取目標(biāo)網(wǎng)站 選擇目標(biāo)網(wǎng)站 選擇目標(biāo)網(wǎng)站看似是一個(gè)很簡(jiǎn)單的過程,但是實(shí)際操作起來你就會(huì)發(fā)現(xiàn)其實(shí)不然。首先我們要選擇幾個(gè)包含很多圖書信息的網(wǎng)站,并以這 些網(wǎng)站來作為 Heritrix 網(wǎng)絡(luò)爬蟲爬取信息的鏈接源。在選定了網(wǎng)站之后就要對(duì)這些網(wǎng)站的網(wǎng)頁(yè)進(jìn)行分析。因?yàn)槲覀円寻瑘D書分類的頁(yè)面作為爬取源,所以我們要盡量選擇包含所有圖書分類的頁(yè)面,如果有固然好,但是實(shí)際操作中你會(huì)發(fā)現(xiàn)有的網(wǎng)站的圖書分類并不會(huì)在一個(gè)頁(yè)面中顯示出來。這就要求我們對(duì)網(wǎng)站頁(yè)面源代碼進(jìn)行仔細(xì)分析,找出目錄的路徑以供 Heritrix 進(jìn)行爬去。必要的時(shí)候我們甚至要編寫一些 java 小程序生成這些路徑。 在本項(xiàng)目中我選用新書城網(wǎng)( )做為搜索源。但是由于需要遍歷所有的圖書 鏈接以實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的爬取,我需要編寫 java小程序來抽取鏈接。 配置 Heritrix、開始抓取 在做好以上的準(zhǔn)備工作之后,開始啟動(dòng) Heritrix進(jìn)行任務(wù)的抓取。 Heritrix 的啟動(dòng)方式有多種,這里選擇的是最常用的 WebUI 方式啟動(dòng)。在 MyEclipse 配置好 Heritrix,運(yùn)行 這個(gè)類。此時(shí),在 Heritrix 的后臺(tái)已經(jīng)對(duì)服務(wù)的 8080 端口進(jìn)行了監(jiān)聽,在瀏覽器中訪問 :8080,就可以打開 Heritrix的 WebUI了。 如下圖: 14 圖 WebUI 界面 下面要做的就是根據(jù)新書城網(wǎng)( )的網(wǎng)頁(yè)特點(diǎn),開發(fā)定制的下載擴(kuò)展處理模塊??梢酝瓿蓪?duì)鏈接的提取,內(nèi)容的抽取等功能。定制的網(wǎng)絡(luò)爬蟲要求不保存其他無關(guān)頁(yè)面。因此,需要擴(kuò)展Heritrix,以實(shí)現(xiàn)無關(guān)頁(yè)面過濾的
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1