• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JAVA的搜索引擎的設(shè)計與實現(xiàn)

      2015-06-25 04:07:16楊爍任曉菲
      科技創(chuàng)新與應(yīng)用 2015年21期
      關(guān)鍵詞:搜索引擎

      楊爍 任曉菲

      摘 要:在浩瀚無邊的網(wǎng)絡(luò)資源中,特別是院校等自建網(wǎng)站的大型單位中,信息檢索是一件很困難的工作,而建立搜索引擎顯得尤為重要。文章闡述在廣域網(wǎng)或局域網(wǎng)下建立信息檢索的技術(shù)描述,從四個方面進行系統(tǒng)分析。為了使大家加深對信息檢索的理解,從原理上解釋從指定的Web頁面中按照超連接進行解析、搜索,并把搜索到的每條結(jié)果進行建立索引。然后通過Web服務(wù)器接受客戶端請求后,將關(guān)鍵字用ICTCLAS.dll中文切詞工具進行切割,將關(guān)鍵字列表在索引中搜索出所匹配的結(jié)果,并將其顯示給客戶。此外,還利用Ajax等一些技術(shù)增加了一些自動提示的效果,使得搜索界面更加人性化。

      關(guān)鍵詞:搜索引擎;網(wǎng)絡(luò)蜘蛛;Lucene;中文切詞

      引言

      面對浩瀚的網(wǎng)絡(luò)資源,各區(qū)間之間達到資源共享,為盡快達到用戶索取資源的目的性而建立搜索引擎,毫不夸張的說所有的用戶都可以從搜索出發(fā)到達自己想去的網(wǎng)上任何一個地方。伴隨著網(wǎng)絡(luò)的發(fā)展,搜索引擎主要經(jīng)歷了三個發(fā)展時期。從1994年初始,在“求全”的基礎(chǔ)上開展應(yīng)用,反應(yīng)速率較慢。從1966年出現(xiàn)分布式方案,采取機器抓取技術(shù),大大提高了檢索速度。在2000年左右,在改進二代技術(shù)基礎(chǔ)上,增加了互動性和個性化,采用自動分類、自動聚類、區(qū)域智能識別等技術(shù),成為當(dāng)今主流搜索引擎技術(shù),提高用戶應(yīng)用效率。

      1 搜索引擎的結(jié)構(gòu)

      1.1 搜索引擎系統(tǒng)概述

      搜索引擎是根據(jù)用戶的查詢請求,按照一定算法從索引數(shù)據(jù)中查找信息返回給用戶。為了保證用戶查找信息的精度和新鮮度,搜索引擎需要建立并維護一個龐大的索引數(shù)據(jù)庫。一般的搜索引擎由網(wǎng)絡(luò)機器人程序、索引與搜索程序、索引數(shù)據(jù)庫等部分組成。

      網(wǎng)絡(luò)機器人程序建立Lucene索引從SQL中搜索信息Tomcat服務(wù)器Lucene索引數(shù)據(jù)庫瀏覽器JSP網(wǎng)絡(luò)機器人程序、文檔網(wǎng)絡(luò)、機器人程序,建立Lucene索引從SQL中搜索信息Tomcat服務(wù)器Lucene索引數(shù)據(jù)庫瀏覽的機器人程序系統(tǒng)結(jié)構(gòu)圖。

      1.2 搜索引擎的構(gòu)成

      搜索引擎的工作原理主要指輸入一定規(guī)則,在相應(yīng)的數(shù)據(jù)中抓取存儲,進行預(yù)處理,組織排名調(diào)用索引庫數(shù)據(jù)獲取信息。

      1.2.1 網(wǎng)絡(luò)蜘蛛

      網(wǎng)絡(luò)蜘蛛也稱為“網(wǎng)絡(luò)機器人”(Spider),用Myeclipse、MysqL開發(fā),采用Spring+Struts+Hibernate框架構(gòu)成的系統(tǒng)。

      1.2.2 索引與搜索

      采用索引技術(shù),采用NON-CLUSTERED方法,生成關(guān)鍵詞到URL,并以特定數(shù)據(jù)結(jié)構(gòu)存儲在方式。高度注意提高信息查詢的精度,利用信息機制進行過濾和個性化服務(wù),采用分布式結(jié)構(gòu)來提高系統(tǒng)規(guī)模和性能返回用戶的方式。

      1.2.3 Web服務(wù)器

      Web 服務(wù)器也被稱為HTTP服務(wù)器,它通過HTTP協(xié)議與客戶端通信,采取超文本連接的概念,利用Blog、Rss、Psdcasting、SNS、WIKI、Page Rank等技術(shù)任,使資源比較直觀的表現(xiàn)出來。

      1.3 搜索引擎的主要指標及分析

      搜索引擎的主要指標有響應(yīng)時間、召回率、準確率、相關(guān)度等。這些指標決定了搜索引擎的技術(shù)指標,搜索引擎的技術(shù)指標決定了搜索引擎的評價標準。具有較快的反應(yīng)速度和高召回率、準確率是衡量搜索引擎的重要指標,而實現(xiàn)此功能是需要搜索引擎技術(shù)指標來保障的。

      2 網(wǎng)絡(luò)機器人

      2.1 網(wǎng)絡(luò)機器人概念

      網(wǎng)絡(luò)機器人稱Spider程序,是專業(yè)Bot程序的一種,用于查找大量的Web頁面。

      2.2 網(wǎng)絡(luò)機器人的結(jié)構(gòu)分析

      Internet內(nèi)存有很多協(xié)議,系統(tǒng)層中的協(xié)議較為復(fù)雜。網(wǎng)頁是建立在系統(tǒng)層基于HTTP(Hypertext Transfer Protocol)協(xié)議基礎(chǔ)上的,而TCP/IP(Transmission Control Protocol/Internet Protocol)是HTTP的基礎(chǔ)協(xié)議,因此網(wǎng)絡(luò)機器人就是一種Socket協(xié)議。

      2.2.1 網(wǎng)絡(luò)機器程序結(jié)構(gòu)

      Spider在不同網(wǎng)頁之間跳轉(zhuǎn),必須找到一個關(guān)鍵點,也就是頁面上的超連接。網(wǎng)頁代碼由網(wǎng)絡(luò)機器人解析,分解頁面內(nèi)的超連接,通過內(nèi)部遞歸結(jié)構(gòu)和非遞歸結(jié)構(gòu)這兩種結(jié)構(gòu)實現(xiàn)Spider程序。URL在同一時間只能在一個隊列內(nèi),這種狀態(tài)稱為URL狀態(tài)。

      圖1表示URL隊列工作流程,Spider在URL被加入等待隊列中程序被激活運行,Spider程序會按指定方式排序分析網(wǎng)頁中URL,直到無列隊時工作停止。

      2.2.2 Spider程序構(gòu)造

      只有了解Spider程序工作原理及功能擴展,才能構(gòu)建出高效的Spider程序。

      Spider類:這是一個實現(xiàn)了Runnable的類,以便實現(xiàn)多線程提高性能。

      此外Spider還實現(xiàn)了Constants,Constants接口實際上是一個定義常量的地方,它定義了一些與線程處理有關(guān)的常量。工作流程圖如圖2所示:

      2.2.3 提升程序性能。Web頁面資源在互聯(lián)網(wǎng)中十分豐富,提高Spider程序的效能成為最迫切的需求,就如何提高程序有效性介紹幾種技術(shù):(1)Java的多線程技術(shù)。多線程技術(shù)是指同一程序同時運行多個任務(wù)的能力,通過優(yōu)化內(nèi)部程序分工,強化程序間關(guān)聯(lián)度,提高和改善程序性能。(2)數(shù)據(jù)庫技術(shù)。利用數(shù)據(jù)庫技術(shù)是存儲網(wǎng)頁中站點隊列,將網(wǎng)頁站點從內(nèi)存中解放出來,達到提高性能的作用。

      2.2.4 Spider代碼分析

      程序結(jié)構(gòu)圖為:

      程序代碼簡要實現(xiàn)如下:

      public class Spider extends Logger implements Runnable, Constants

      {

      private SpiderConfig config;

      private DownloadQueue queue;

      private Set urlsDownloadedOrScheduled;

      private Set urlsDownloading;

      private int downloadsInProgress;

      private boolean quit;

      private int running;

      private long lastCheckpoint;

      public void start();

      public void stop();

      private void writeCheckpoint();

      public void readCheckpoint();

      public void run();

      private int queueSize();

      private List downloadURL(URLToDownload url, URLGetter urlGetter, HTMLParser htmlParser);

      private List filterURLs(List URLs);

      }

      3 基于lucene的索引與搜索

      3.1 Lucene檢索簡介

      Lucene是開放源代碼的全文引擎工具包,用java編寫方便嵌套各類應(yīng)用中實現(xiàn)檢索的工具。

      3.2 Lucene原理分析

      3.2.1 Lucene原理。Lucene的API設(shè)計功能強大,可以映射到各類軟件中,將數(shù)據(jù)處理為交叉引用查找,提高索引和搜索效率,Lucene類似于索引全文的數(shù)據(jù)庫系統(tǒng)。

      3.2.2 Lucene的索引效率。Lucene索引將查詢的模糊化變成多個精確查詢的邏輯組合過程,進而提高查詢的效率。將數(shù)據(jù)通過全文索引一一建立反向索引,以term匹配數(shù)據(jù),實現(xiàn)接口對接支持,以緩沖式批量讀取的形式將特別算法匹配率最高的前100條結(jié)果輸出,用自身算法實現(xiàn)不同語言接口的對接,從優(yōu)選擇符合需要的索引規(guī)則,建立最優(yōu)排序規(guī)則,提高索引效率。

      3.2.3 中文切分詞機制。目前采取比較流行的自動切分算法,這種算法必須要創(chuàng)建相對較為豐富的詞庫用以識別單字或詞,利用規(guī)則將多個關(guān)鍵詞進行組合,并映射到相應(yīng)的索引中,查找出所需內(nèi)容。

      4 構(gòu)建自己的搜索引擎

      4.1 為什么要構(gòu)建自己的搜索引擎

      伴隨經(jīng)濟發(fā)展,信息呈現(xiàn)爆炸式增長的新情況,使用一個入口查尋搜索已經(jīng)不能用戶的需要,提供全面、精確、高效的搜索引擎是滿足用戶需求的必然要求。

      4.2 通過Lucene建立索引

      4.2.1 參數(shù)設(shè)置。建立索引至少需要兩個參數(shù):目標文件路徑,索引的路徑。它可以以配置文件的形式存在,但是簡單起見,作者直接用常量在類中了。

      4.2.2 建立索引。索引的建立索引的類為LuceneSearch.java,它主要用來搜索數(shù)據(jù)和處理結(jié)果的。

      4.3 通過Struts+Tomcat構(gòu)架系統(tǒng)

      有了上面的一些基本功能點,我們還差一個跟用戶交互的UI接口,和一個運行B/S模式的web服務(wù)器。選用JSP+Struts,Web服務(wù)器作者選用Tomcat。

      4.3.1 UI和web層設(shè)計。UI分成兩層,最外一層為跟客戶端接觸的JSP頁面,里面還有一層來處理我們的請求——Action層。

      Action層是由Struts技術(shù)來完成的。Struts是一種基于MVC設(shè)計模式的框架,其中struts-config.xml是其核心配置文件。

      4.3.2 基于Tomcat的Web服務(wù)器。Web服務(wù)器以實現(xiàn)在網(wǎng)絡(luò)中發(fā)布信息、查詢數(shù)據(jù)、處理數(shù)據(jù)等為目的,可搭建眾多應(yīng)用程序的基礎(chǔ)平臺。Tomcat是一個免費開放源代碼、應(yīng)用廣泛的頂級程序,是運行servlet和JSP Web應(yīng)用軟件的必備程序。由于程序免費、源代碼開放、維護及時、技術(shù)先進、性能穩(wěn)定等特點,成為目前較為流行的Web服務(wù)器之一,得以廣泛的應(yīng)用。Tomcat服務(wù)器由一系列可配置組件構(gòu)成,核心組件為Catalina Servlet組件,其層次關(guān)系如圖3:

      在Tomcat中,部署應(yīng)用程序并不復(fù)雜,按指定的方法安裝調(diào)試,即可達到編譯效果,提高訪問速度。

      5 結(jié)束語

      文章對基于網(wǎng)絡(luò)的搜索引擎結(jié)構(gòu)和性能指標進行了分析,介紹了網(wǎng)絡(luò)機器人的基本概念,分析了Spider程序的結(jié)構(gòu)和功能,對一些結(jié)合具體代碼舉例說明,增強了對搜索引擎的了解應(yīng)用,并加入利用Lucene索引技術(shù)闡述,采用Tomcat框架提高交互體驗,進一步增強自建探索引擎的效率。

      參考文獻

      [1]盧亮,張博文.搜索引擎原理、實踐與應(yīng)用[M].北京:電子工業(yè)出版社,2007,9.

      [2]佘正平.搜索引擎的關(guān)鍵詞分析與處理[J].情報探索,2008,5.

      [3]何會民,韓東霞.基于Lucene的網(wǎng)絡(luò)新聞搜索引擎研究與實現(xiàn)[J].商場現(xiàn)代化,2008,9.

      [4]曾偉輝.深層網(wǎng)絡(luò)爬蟲研究綜述[J].計算機系統(tǒng)應(yīng)用,2008,5.

      [5]房志峰.中文搜索引擎中的分詞技術(shù)研究[J].科學(xué)技術(shù)與工程,2008,9.

      [6]埃克爾著(美),陳昊鵬(譯).JAVA編程思想[M].北京:機械工業(yè)出版社,2007,6.

      猜你喜歡
      搜索引擎
      Chrome 99 Canary恢復(fù)可移除預(yù)置搜索引擎選項
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      基于Lucene搜索引擎的研究
      知識漫畫
      百科知識(2012年11期)2012-04-29 08:30:15
      一種自反饋式元搜索系統(tǒng)的設(shè)計
      搜索引擎,不止有百度與谷歌
      搜索,也要“深搜熟濾”
      中超| 嘉鱼县| 广河县| 平乡县| 嘉兴市| 金湖县| 章丘市| 榕江县| 巴东县| 韶关市| 仁寿县| 德江县| 红河县| 墨竹工卡县| 杭锦旗| 凤城市| 黎城县| 鞍山市| 交口县| 澜沧| 大埔区| 威宁| 上饶县| 于都县| 凤城市| 临湘市| 宁国市| 报价| 龙泉市| 崇礼县| 米脂县| 海宁市| 中方县| 海林市| 仁怀市| 东宁县| 荆州市| 滦南县| 湘乡市| 汉中市| 环江|