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

正文內(nèi)容

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

2025-06-12 18:26 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 letePage(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() { } } 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 10 3 基于 lucene 的索引與搜索 、 tomcat 服務(wù)器 什么是 Lucene 全文檢索 Lucene 是 Jakarta Apache 的開源項(xiàng)目。它 是一個(gè)用 Java 寫的全文索引引擎工具包,可以 方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引 /檢索功能。 Lucene的原理 分析 一個(gè)良好的查詢界面非常重要,例如 Googl 就以她簡(jiǎn)潔的查詢界面而聞名。我在設(shè)計(jì)的時(shí)候也充分考慮了實(shí)用性和簡(jiǎn)潔性。 查詢界面截圖如下: 搜索結(jié)果截圖如下: 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 11 全文檢索的實(shí)現(xiàn)機(jī)制 Lucene 的 API 接口設(shè)計(jì)的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫(kù)的表 ==記錄 ==字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫(kù)等都可以比較方便的映射到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: 查詢結(jié)果集,由匹配的 Document組成 Lucene的索引效率 通常書籍后面常常附關(guān)鍵詞索引表(比如:北京: 12, 34 頁(yè),上海: 3,77頁(yè) ?? ),它能夠幫助讀者比較快地找到相關(guān)內(nèi)容的頁(yè)碼。而數(shù)據(jù)庫(kù)索引能夠大大提高查詢的速度原理也是一樣,想像一下通過書后面的索引查找的速度要比一頁(yè)一頁(yè)地翻內(nèi)容高多少倍 ?? 而索引之所以效率高,另外一個(gè)原因是它是排好序的。 對(duì)于檢索系統(tǒng)來(lái)說核心是一個(gè)排序問題。 由于數(shù)據(jù)庫(kù)索引不是為全文索引設(shè)計(jì)的,因此,使用 like %keyword%時(shí),數(shù)據(jù)庫(kù)索引是不起作用的,在使用 like 查詢時(shí),搜索過程又變成類似于一頁(yè)頁(yè)翻書的遍歷過程了,所以對(duì)于含有模糊查詢的數(shù)據(jù)庫(kù)服務(wù)來(lái)說, LIKE 對(duì)性能的危害是極大的。如果是需要對(duì)多個(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)鍵詞的文章編號(hào),出現(xiàn)次數(shù)(甚至包括位置:起始偏移量,結(jié)束偏移量),出現(xiàn)頻率 ],檢索過程就是需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 12 把模糊查詢變成多個(gè)可以利用索引的精確查詢的邏輯組合的過程。從而大大提高了多關(guān)鍵詞查詢的效率,所以,全文檢索問題歸結(jié)到最后是一個(gè)排序問題。 由此可以看出模糊查詢相對(duì)數(shù)據(jù)庫(kù)的精確查詢是一個(gè)非常不確定的問題,這也是大部分?jǐn)?shù)據(jù)庫(kù)對(duì)全文檢索支持有限的原因。 Lucene 最核心的特征是通過特殊的索引結(jié) 構(gòu)實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫(kù)不擅長(zhǎng)的全文索引機(jī)制,并提供了擴(kuò)展接口,以方便針對(duì)不同應(yīng)用的定制。 可以通過 以 下表格對(duì)比一下數(shù)據(jù)庫(kù)的模糊查詢: Lucene 全文索引引擎 數(shù)據(jù)庫(kù) 索引 將數(shù)據(jù)源中的數(shù)據(jù)都通過全文索引一一建立反向索引 對(duì)于 LIKE 查詢來(lái)說,數(shù)據(jù)傳統(tǒng)的索引是根本用不上的。數(shù)據(jù)需要逐個(gè)便利記錄進(jìn)行 GREP 式的模糊匹配,比有索引的搜索速度要有多個(gè)數(shù)量級(jí)的下降。 匹配效果 通過詞元 (term)進(jìn)行匹配,通過語(yǔ)言分析接口的實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)中文等非英語(yǔ)的支持。 使用: like %% 會(huì)把 herlands也匹配出來(lái), 多個(gè)關(guān)鍵詞的模糊匹配:使用 like %%%:就不能匹配詞序顛倒的.. 匹配度 有匹配度算法,將匹配程度(相似度)比較高的結(jié)果排在前面。 沒有匹配程度的控制:比如有記錄中 出現(xiàn) 5 詞和出現(xiàn) 1 次的,結(jié)果是一樣的。 結(jié)果輸出 通過特別的算法,將最匹配度最高的頭 100 條結(jié)果輸出,結(jié)果集是緩沖式的小批量讀取的。 返回所有的結(jié)果集,在匹配條目非常多的時(shí)候(比如上萬(wàn)條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集。 可定制性 通過不同的語(yǔ)言分析接口實(shí)現(xiàn),可以方 便的定制出符合應(yīng)用需要的索引規(guī)則(包括對(duì)中文的支持) 沒有接口或接口復(fù)雜,無(wú)法定制 結(jié)論 高負(fù)載的模糊查詢應(yīng)用,需要負(fù)責(zé)的模糊查詢的規(guī)則,索引的資料量比較大 使用率低,模糊匹配規(guī)則簡(jiǎn)單或者需要模糊查詢的資料量少 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 13 中文切分詞機(jī)制 對(duì)于中文來(lái)說,全文索引首先還要解決一個(gè)語(yǔ)言分析的問題,對(duì)于英文來(lái)說,語(yǔ)句中單詞之間是天然通過空格分開的,但亞洲語(yǔ)言的中日韓文語(yǔ)句中的字是一個(gè)字挨一個(gè),所有,首先要把語(yǔ)句中按 “ 詞 ” 進(jìn)行索引的話,這個(gè)詞如何切分出來(lái)就是一個(gè)很大的問題。 首先,肯定不能用單個(gè)字符作 (sigram)為索引單元,否則查 “ 上海 ” 時(shí),不能讓含有 “ 海上 ” 也匹配。但一句話: “ 北京天安門 ” ,計(jì)算機(jī)如何按照中文的語(yǔ)言習(xí)慣進(jìn)行切分呢? “ 北京 天安門 ” 還是 “ 北 京 天安門 ” ?讓計(jì)算機(jī)能夠按照語(yǔ)言習(xí)慣進(jìn)行切分,往往需要機(jī)器有一個(gè)比較豐富的詞庫(kù)才能夠比較準(zhǔn)確的識(shí)別出語(yǔ)句中的單詞。另外一個(gè)解決的辦法是采用自動(dòng)切分算法:將單詞按照 2元語(yǔ)法 (bigram)方式切分出來(lái),比如: 北京天安門 == 北京 京天 天安 安門 。這樣,在查詢的時(shí)候,無(wú)論是查詢 北京 還是查詢 天安門 ,將查詢?cè)~組按同樣的規(guī)則進(jìn)行切分: 北京 , 天安安門 ,多個(gè)關(guān)鍵詞之間按與 and的關(guān)系組合,同樣能夠正確地映射到相應(yīng)的索引中。這種方式對(duì)于其他亞洲語(yǔ)言:韓文,日文都是通用的。 基于自動(dòng)切分的最大優(yōu)點(diǎn)是沒有詞表維護(hù)成本,實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是索引效率低,但對(duì)于中小型應(yīng)用來(lái)說,基于 2元語(yǔ)法的切分還是夠用的?;?2 元切分后的索引一般大小和源文件差不多,而對(duì)于英文,索引文件一般只有原文件的30%40%不同, 自動(dòng)切分 詞表切分 實(shí)現(xiàn) 實(shí)現(xiàn)非常簡(jiǎn)單 實(shí)現(xiàn)復(fù)雜 查詢 增加了查詢分析的復(fù)雜程度, 適于實(shí)現(xiàn)比較復(fù)雜的查詢語(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ú)詞表同步問題 多語(yǔ)言環(huán)境:無(wú)詞表維護(hù)成本 對(duì)查詢和存儲(chǔ)效率要求高的專業(yè)搜索引擎 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 14 服務(wù)端設(shè)計(jì) 主要利用 JavaTM Servlet 技術(shù)實(shí)現(xiàn),用戶通過 GET 方法從客戶端向服務(wù)端提交查詢條件,服務(wù)端通過 Tomcat 的 Servlet 容器接受并分析提交參數(shù),再調(diào)用 lucene 的開發(fā)包進(jìn) 行搜索操作。最后把搜索的結(jié)果以 HTTP 消息包的形式發(fā)送至客戶端,從而完成一次搜索操作。 Servlet 是一種獨(dú)立于平臺(tái)和協(xié)議的服務(wù)器端的 Java 應(yīng)用程序,可以生成動(dòng)態(tài)的 Web 頁(yè)面。它擔(dān)當(dāng) Web 瀏覽器或其他 HTTP 客戶程序發(fā)出請(qǐng)求,與 HTTP服務(wù)器上的 數(shù)據(jù)庫(kù) 或應(yīng)用程序之間的中間層。 Servlet 是位于 Web 服務(wù)器內(nèi)部的服務(wù)器端的 Java 應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的 Java 應(yīng)用程序不同,Servlet 由 Web 服務(wù)器進(jìn)行加載,該 Web 服務(wù)器必須包含支持 Servlet 的 Java虛擬機(jī) 。 服務(wù)端 Servlet 程序的結(jié)構(gòu)如下: 實(shí)現(xiàn)的關(guān)鍵代碼如下: public void Search(String qc, PrintWriter out) throws Exception { // 從索引目錄創(chuàng)建索引 IndexSearcher _searcher = new IndexSearcher(c:\\news\\index)。 // 創(chuàng)建標(biāo)準(zhǔn)分析器 Analyzer analyzer = new ChineseAnalyzer()。 // 查詢條件 String line = qc。 // Query 是一個(gè)抽象類 Query query = (line, title, analyzer)。 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 15 Lucene與 Spider 的結(jié)合 首先構(gòu)造一個(gè) Index 類用來(lái)實(shí)現(xiàn)對(duì)內(nèi)容進(jìn)行索引。 先在 C 盤新建一個(gè) News文件夾,再在 News 下面新建一個(gè) index 子文件夾,這一步是必需要的, 因?yàn)檫@個(gè)文件夾是用來(lái)保存搜索到的結(jié)果。 否則當(dāng)搜索所要的網(wǎng)頁(yè)之后,從而導(dǎo)致無(wú)法得到結(jié)果。 先進(jìn)入 的安裝目錄下你所使用的 tomcat 文件夾,運(yùn)行文件夾里的 ,這樣就啟動(dòng)了 自帶的 tomcat 服務(wù)器?,F(xiàn)在你用 打開 News 這個(gè)工程運(yùn)行,運(yùn)行結(jié)果就會(huì)顯示搜索到多少條新聞。如果不運(yùn)行 tomcat 服務(wù)器是搜索不到新聞的。 網(wǎng)絡(luò)蜘蛛是一種能自動(dòng)到網(wǎng)上查找信息的一種程序,該程序具有高度的自動(dòng)性,只要告訴他一個(gè)網(wǎng)站,他就可以從這個(gè)網(wǎng)站開始依次通過該網(wǎng) 站的鏈接自動(dòng)抓取鏈接內(nèi)容以及網(wǎng)址,然后就順著這些鏈接一直抓下去。 代碼分析如下: package news。 import 。 import 。 import 。 import 。 import 。 public class Index { IndexWriter _writer = null。 Index() throws Exception { _writer = new IndexWriter(c:\\News\\index, 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 16 new ChineseAnalyzer(), true)。 } /** * 把每條新聞加入索引中 * @param url 新聞的 url * @param title 新聞的標(biāo)題 * @throws */ void AddNews(String url, String title) throws Exception { Document _doc = new Document()。 ((title, title))。 ((url, url))。 (_doc)。 } /** * 優(yōu)化并且清理資源 * @throws */ void close() throws Exception { ()。 ()。 } } 然后構(gòu)造一個(gè) HTML 解析類,把通過 bot 程序收集的新聞內(nèi)容進(jìn)行索引。 HTML 因?yàn)?Web 中的信息都是建立在 HTML 協(xié)議之上的,所以網(wǎng)絡(luò)機(jī)器人在檢索網(wǎng)頁(yè)時(shí)的第一個(gè)問題 就是如何解析 HTML。在解決如何解析之前,先來(lái)介紹下 HTML中 的幾種數(shù)據(jù)。 ( 1) 文本:除了腳本和標(biāo)簽之外的所有數(shù)據(jù) 。 需要本論文完整程序源代碼,答辯 PPT 或者更多畢業(yè)論文聯(lián)系 799523222 17 ( 2) 注釋:程序員留下的說明文字,對(duì)用戶是不可見的 。 ( 3) 簡(jiǎn)單標(biāo)簽:由單個(gè)表示的 HTML 標(biāo)簽 。 ( 4) 開始標(biāo)簽和結(jié)束標(biāo)簽:用來(lái)控制所包含的 HTML 代碼 。 我們?cè)谶M(jìn)行解析的時(shí)候不用關(guān)心所有的標(biāo)簽,只需要對(duì)其中幾種重要的進(jìn)行解析即可。 超連接標(biāo)簽 : 超連接定義了 WWW通過 Inte
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1