• 
    

    
    

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

      基于Java的搜索引擎的研究與設(shè)計

      2021-11-20 00:21:37陳娟
      電子技術(shù)與軟件工程 2021年21期
      關(guān)鍵詞:分詞搜索引擎瀏覽器

      陳娟

      (咸陽師范學(xué)院 陜西省咸陽市 712000)

      1 序言

      隨著互聯(lián)網(wǎng)的發(fā)展,信息種類越來越多,信息量越來越大,用戶想找到所需的資料簡直如同大海撈針,為滿足大眾信息檢索需求的專業(yè)搜索網(wǎng)站便應(yīng)運而生了。搜索引擎(search engine)是一個用戶通過查詢關(guān)鍵字從互聯(lián)網(wǎng)中搜索出信息的特定系統(tǒng)。搜索引擎系統(tǒng)會對互聯(lián)網(wǎng)中的所有信息資源進(jìn)行搜索、整理和分類,同時將這些信息存儲在網(wǎng)絡(luò)數(shù)據(jù)庫中,用戶只需在客戶端輸入查詢關(guān)鍵字,即可與數(shù)據(jù)庫中的信息進(jìn)行比對,并將最終結(jié)果顯示給用戶。因此搜索引擎包含了信息搜索、信息分類、用戶查詢?nèi)糠?。目前,由于智能手機(jī)的廣泛使用,搜索引擎已經(jīng)從計算機(jī)轉(zhuǎn)移到了更便于攜帶的手機(jī)上,讓用戶隨時隨地可上網(wǎng)搜索資源。

      根據(jù)工作方式的不同,搜索引擎可以分為目錄索引類搜索引擎(Search Index/Directory)、全文搜索引擎(Full Text Search Engine)和元搜索引擎(Meta Search Engine)。目錄索引類搜索引擎嚴(yán)格意義上不是一個搜索引擎,它只是一個按目錄分類的網(wǎng)站鏈接列表,用戶不是依靠關(guān)鍵詞(Keywords)進(jìn)行查詢,而是根據(jù)分類目錄找到相關(guān)信息,常見的目錄索引搜索引擎如雅虎、新浪和網(wǎng)易等;全文搜索引擎是從互聯(lián)網(wǎng)中提取各個網(wǎng)站的文字信息,建立起網(wǎng)絡(luò)數(shù)據(jù)庫,根據(jù)用戶輸入的查詢關(guān)鍵字檢索出相匹配的記錄并返回結(jié)果。它的數(shù)據(jù)庫是通過一個叫“網(wǎng)絡(luò)爬蟲”或“網(wǎng)絡(luò)蜘蛛”的軟件自建網(wǎng)頁數(shù)據(jù)庫,搜索結(jié)果直接從自身的數(shù)據(jù)庫中調(diào)用,比如著名的Google 和百度搜索;元搜索引擎是同時在多個搜索引擎上搜索,將信息返回給用戶。本文主要通過研究全文搜索引擎相關(guān)技術(shù),設(shè)計一個基于Java 的搜索引擎系統(tǒng),系統(tǒng)采用B/S 架構(gòu),前臺頁面使用JSP 開發(fā),后臺采用Mysql 數(shù)據(jù)庫來實現(xiàn)數(shù)據(jù)存儲和查詢。

      2 關(guān)鍵技術(shù)

      2.1 Lucene簡介

      Lucene 是由Apache 軟件基金會支持和提供的一個成員,它是用于全文檢索的開源程序庫。Lucene 并不是一個功能完善的搜索引擎,它其實是為開發(fā)人員提供的一個簡單易用的工具包,目的是在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能。同時,Lucene 在Java 開發(fā)環(huán)境里是一個成熟的免費的工具包,因此,開發(fā)人員可以簡單、方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎,因此它是目前最受歡迎的免費Java 信息檢索程序庫。在應(yīng)用場景中,對于數(shù)據(jù)量非常大的數(shù)據(jù)可采用全文檢索方式進(jìn)行搜索,比如我們熟知的百度、Google 等搜索引擎,還有在各大論壇、購物網(wǎng)站等進(jìn)行站內(nèi)搜索時都會用到。

      安裝Lucene 前需要進(jìn)行Java 使用環(huán)境的基本配置,以便確保在某個平臺下能夠運行Java 源代碼。在Java 環(huán)境變量的Classpath中添加Lucene 的位置,比如:“D:java Lucene-1.4-finalLuncene-1.4-final.jar;”。也可以直接將Lucene-1.4-final.jar 文件放到WEBINFclasses 目錄下。

      2.2 中文分詞

      中文分詞是指將一個連續(xù)序列的中文語句切分成單獨的多個詞。對于一段用戶輸入的中文,如果能夠正確的將其切分為詞,計算機(jī)就可以準(zhǔn)確識別其語句含義,這就是分詞算法?,F(xiàn)有的分詞算法可分為三大類:基于統(tǒng)計的分詞方法、基于理解的分詞方法以及基于字符串的分詞方法。對于搜索引擎來說,中文分詞是否準(zhǔn)確,常常直接影響到對搜索結(jié)果的相關(guān)度排序,也會導(dǎo)致最終返回的結(jié)果不同。中文分詞技術(shù)之所以會廣泛應(yīng)用在搜索引擎中是因其語法上的特殊性,以英文為代表的拉丁語系可以使用空格作為分隔符,將句子自然分割為相關(guān)單詞,而中文語句中詞語之間缺少分隔符,它的切分非常復(fù)雜,由于在現(xiàn)代漢語中通常是以詞語作為基本表達(dá)單元居多,不再使用單獨字表達(dá)相關(guān)含義。例如:“計算機(jī)技術(shù)”,基本語義單元為“計算機(jī)”和“技術(shù)”,如果按單字切分為“計”、“算”、“機(jī)”、“技”、“術(shù)”,則這些單字無法表達(dá)中文含義,因此不符合需求。

      2.3 JSP技術(shù)

      JSP 全稱Java Server Pages,是一種動態(tài)網(wǎng)頁開發(fā)技術(shù),主要用于實現(xiàn)Java web 應(yīng)用程序的用戶界面部分。在企業(yè)開發(fā)中,前端工程師(美工)負(fù)責(zé)前端的頁面(html 文件)相關(guān)設(shè)計和美化工作,后臺的Java 代碼由Java 程序開發(fā)人員完成,要使前端和后臺相結(jié)合完成網(wǎng)頁正常運行,后臺開發(fā)人員需要在Servlet 中使用response獲取輸出流,與前端頁面鏈接,如此會使得系統(tǒng)中的Java 代碼十分繁瑣,而且不利于前端工程師維護(hù)頁面。因此sun 公司開發(fā)出JSP 來解決這一問題,開發(fā)人員可以直接在JSP 文件中書寫HTML代碼、XHTML 代碼、XML 元素以及嵌入JSP 操作和命令,最后由Java 對應(yīng)的機(jī)制將其翻譯成相應(yīng)的Java 代碼,這樣前端工程師就可以直接在JSP 文件中對頁面進(jìn)行設(shè)計和修改,后臺開發(fā)人員也可以在JSP 頁面中添加后臺程序。

      2.4 超文本傳輸協(xié)議

      超文本傳輸協(xié)議(Hypertext Transfer Protocol, HTTP)是Web的基礎(chǔ)協(xié)議。超文本傳輸協(xié)議是用于從萬維網(wǎng)服務(wù)器上傳輸超文本到本地瀏覽器,是一種簡單的請求—響應(yīng)協(xié)議,它保證計算機(jī)能夠正確快速地傳輸超文本文檔,還能指定客戶端可以向服務(wù)器端發(fā)送哪些消息、將收到什么響應(yīng)以及所發(fā)送文檔中的哪部分內(nèi)容首先顯示。由于目前互聯(lián)網(wǎng)中使用最為廣泛的協(xié)議就是超文本傳輸協(xié)議HTTP,因此所有的WWW 文件都遵守這個標(biāo)準(zhǔn)。

      2.5 MySQL數(shù)據(jù)庫

      數(shù)據(jù)庫是建立在計算機(jī)存儲設(shè)備上的一種“倉庫”,用于組織、存儲和管理各類數(shù)據(jù),數(shù)據(jù)可按照一定的數(shù)據(jù)模型來存儲,用戶可對“倉庫”中的數(shù)據(jù)進(jìn)行新增、修改、刪除和查詢等操作。數(shù)據(jù)庫中的數(shù)據(jù)可為多用戶共享使用,即多個用戶可以同時存取數(shù)據(jù)庫中的同一個數(shù)據(jù),而不受具體程序的限制,這不僅滿足了用戶對信息內(nèi)容的要求,同時也滿足了各用戶之間信息通信的需求。關(guān)系型數(shù)據(jù)庫是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,它使用二維表格來存儲大量數(shù)據(jù),本系統(tǒng)所研究的搜索引擎后臺是由MySQL 實現(xiàn),MySQL是比較受歡迎的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可移植于各種流行的操作系統(tǒng)平臺,由于Mysql 是開源的,它支持大型的數(shù)據(jù)庫,使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式,因此,MySQL數(shù)據(jù)庫應(yīng)用在大多數(shù)的系統(tǒng)中,用于后臺數(shù)據(jù)的存儲以及操作。

      3 需求分析

      全文搜索引擎可分為四個部分,分別是搜索器、索引器、檢索器和用戶界面。它的工作過程是:首先搜索器在互聯(lián)網(wǎng)中進(jìn)行搜索,發(fā)現(xiàn)和搜集網(wǎng)頁信息;接下來索引器對搜索器搜索到的信息進(jìn)行一系列的解析、整理后,提取出關(guān)鍵信息并建立索引項,存儲于索引數(shù)據(jù)庫中;最后檢索器會根據(jù)用戶在用戶界面輸入的查詢關(guān)鍵字,在索引數(shù)據(jù)庫中快速檢索文檔,找到與查詢請求相匹配的文檔信息,然后將查詢結(jié)果按相關(guān)度排序顯示給用戶;用戶接口主要用于和用戶交互,用戶進(jìn)入搜索界面,在文本框中輸入想要查詢的關(guān)鍵字,點擊“搜索”,系統(tǒng)根據(jù)用戶的查詢請求,查詢索引表與數(shù)據(jù)庫,產(chǎn)生查詢結(jié)果并按照一定的格式輸出顯示給用戶。本文所研究的全文搜索引擎系統(tǒng)應(yīng)具備以下功能:

      3.1 抓取網(wǎng)頁

      在互聯(lián)網(wǎng)中,URL 是每個網(wǎng)頁的入口地址,搜索引擎所采用的蜘蛛程序通過URL 來抓取網(wǎng)站頁面,然后從該頁面提取新的URL存儲到原始URL 列表中,最后將該原始頁面存儲到搜索引擎索引庫。

      3.2 處理網(wǎng)頁

      對于抓取到的網(wǎng)頁信息,搜索引擎還需要做一些前期預(yù)處理工作,首先是從網(wǎng)頁信息中提取出關(guān)鍵詞,這是最重要的一步,需要去除重復(fù)的網(wǎng)頁信息,使用中文分詞技術(shù)提取關(guān)鍵信息,判斷網(wǎng)頁類型,分析超鏈接,計算網(wǎng)頁的重要度和豐富度等,這些都為后期用戶檢索關(guān)鍵字以及按照相關(guān)度排序顯示查詢結(jié)果提供重要依據(jù)。

      3.3 提供檢索服務(wù)

      在用戶界面,當(dāng)用戶輸入關(guān)鍵詞,點擊“搜索”按鈕后,搜索引擎會從后臺索引數(shù)據(jù)庫中查找信息,最后將結(jié)果輸出顯示給用戶。為了使用戶能快速找到有用的網(wǎng)頁信息,除了網(wǎng)頁的URL 和標(biāo)題外,還會提供一段來自該網(wǎng)頁信息的摘要。

      本系統(tǒng)在性能上應(yīng)注意以下幾點:

      (1)為了提高多用戶檢索時的檢索效率,系統(tǒng)應(yīng)采用優(yōu)化后的檢索策略和多線程并發(fā)檢索機(jī)制;

      (2)系統(tǒng)應(yīng)具有高安全性,應(yīng)提供數(shù)據(jù)庫級、記錄級與字段級安全保護(hù)措施。

      4 系統(tǒng)設(shè)計

      根據(jù)全文搜索引擎的需求分析,本系統(tǒng)應(yīng)包含以下模塊:預(yù)處理功能,數(shù)據(jù)庫連接池部分,Web 框架與用戶界面的設(shè)計。這些不同功能的模塊在模擬搜索引擎中起著不同的作用,通過它們之間的相互配合、相互補(bǔ)充以實現(xiàn)搜索的目的。

      為方便用戶使用,將用戶操作界面分為瀏覽器界面、J2ME 既模擬手機(jī)窗口界面,提供給用戶方便、美觀、實用的接口界面。爬取功能負(fù)責(zé)采集數(shù)據(jù),預(yù)處理部分負(fù)責(zé)將數(shù)據(jù)庫字典一次性加載到內(nèi)存中。數(shù)據(jù)庫連接池部分負(fù)責(zé)創(chuàng)建連接池信息,以滿足多用戶使用,多程序同時進(jìn)行。

      4.1 系統(tǒng)界面設(shè)計

      系統(tǒng)的客戶端界面采用Jsp 技術(shù),保證用戶界面美觀大方,方便操作,另外在頁面的布局和顯示效果方面也應(yīng)合理設(shè)計,使其在性能上更加優(yōu)越,沒有操作的盲區(qū)或者明顯的不合理的地方。

      4.1.1 界面的顯示問題

      頁面高度、寬度合適,配色美觀,內(nèi)容位置布局合理,文字大小、顏色適當(dāng)。隨著瀏覽器,分辨率的變化,瀏覽器顯示區(qū)域的高度和分辨率顯示的高度的不同,一個頁面不夠顯示的內(nèi)容可用下拉滾動條設(shè)置。列表頁面可以采用表格形式展示,可以根據(jù)喜好來選擇每頁顯示多少條信息,列表項較多時可分頁顯示。

      4.1.2 頁面布局問題

      頁面可采用div 塊來設(shè)計,整個頁面可分為top、middle、left、right、bottom 以及footer 等部分,每部分放置不同的內(nèi)容,這種方式結(jié)構(gòu)清晰,代碼簡單,便于對整個頁面布局,后期維護(hù)方便。

      4.2 系統(tǒng)用戶模塊設(shè)計

      用戶界面主要用于和用戶交互,包括響應(yīng)用戶的查詢檢索和記錄用戶的行為。用戶界面需要獲取用戶的查詢請求,提交給系統(tǒng),查詢索引表與數(shù)據(jù)庫,產(chǎn)生結(jié)果并按照一定的格式輸出顯示給用戶,以及記錄日志(包括用戶查詢短語和查詢時間等信息)等。

      在Eclipse 服務(wù)器端運行之后, 打開瀏覽器輸入http://127.0.0.1:8080/telServer,進(jìn)入搜索初始界面,在文本框中輸入想要查詢的關(guān)鍵字。點擊“搜索”。根據(jù)用戶輸入的查詢關(guān)鍵字進(jìn)行搜索得出結(jié)果。搜索前應(yīng)對用戶輸入的短語進(jìn)行分詞處理,以此結(jié)果作為搜索關(guān)鍵字到索引表中進(jìn)行查詢。按照系統(tǒng)查詢返回的結(jié)果,根據(jù)動態(tài)網(wǎng)頁生成技術(shù),按照一定的模版形成結(jié)果頁面輸出給用戶。

      4.3 系統(tǒng)服務(wù)器模塊設(shè)計

      系統(tǒng)的服務(wù)器部分主要包括兩個部分:創(chuàng)建索引和搜索模塊。

      創(chuàng)建索引模塊:該部分是整個系統(tǒng)的核心,包括了解析文檔和為文檔建立索引。索引的格式獨立于運行平臺,創(chuàng)建的獨立索引塊會加速創(chuàng)建索引的速度,為所有文檔建立索引也是最終能否搜索出目標(biāo)文檔的關(guān)鍵,從而為下一步搜索做好準(zhǔn)備。

      搜索模塊:該模塊的實現(xiàn)搜索功能,負(fù)責(zé)為界面模塊提供文檔地址,從而通過界面向用戶展示搜索結(jié)果。

      4.4 系統(tǒng)服務(wù)器框架設(shè)計

      本系統(tǒng)采用的是B/S(Browser/Server)架構(gòu),也就是瀏覽器和服務(wù)器架構(gòu)模式,這種模式是由早期的C/S(客戶機(jī)/服務(wù)器)模式改進(jìn)演變后的結(jié)構(gòu)。在B/S 架構(gòu)下,用戶只需安裝Web 瀏覽器,打開搜索主頁,即可完成搜索功能。這種模式下,前端需要處理的事務(wù)非常少,大部分是數(shù)據(jù)渲染工作,后臺也就是服務(wù)器端需要處理大量的事務(wù)邏輯。在后期維護(hù)和升級時,管理員也只需要在服務(wù)器端操作即可,所有的客戶端只是瀏覽器,不需要任何操作,這樣就大大簡化了客戶端計算機(jī)的工作負(fù)載,減輕了系統(tǒng)維護(hù)與升級的成本和工作量。用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運行時自動升級。

      5 總結(jié)

      隨著互聯(lián)網(wǎng)迅速發(fā)展至今,搜索引擎經(jīng)歷了30年的發(fā)展壯大,帶給用戶非常便利的體驗。巨大的互聯(lián)網(wǎng)每時每刻都在產(chǎn)生著大量的信息,正因為搜索引擎的出現(xiàn),才讓我們在浩瀚的信息海洋中找到了我們的目標(biāo)。科技在不斷進(jìn)步,未來的搜索引擎朝著社會化、實時化、可移動性、個性化方向不斷發(fā)展,同時跨語言的搜索,基于圖片、視頻、音頻的搜索也是我們不斷研究的方向。

      猜你喜歡
      分詞搜索引擎瀏覽器
      結(jié)巴分詞在詞云中的應(yīng)用
      智富時代(2019年6期)2019-07-24 10:33:16
      反瀏覽器指紋追蹤
      電子制作(2019年10期)2019-06-17 11:45:14
      值得重視的分詞的特殊用法
      環(huán)球瀏覽器
      再見,那些年我們嘲笑過的IE瀏覽器
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      高考分詞作狀語考點歸納與疑難解析
      論英語不定式和-ing分詞的語義傳承
      紫阳县| 冕宁县| 东兰县| 长武县| 安达市| 萍乡市| 旺苍县| 车险| 翼城县| 应城市| 宣恩县| 江油市| 正宁县| 芦山县| 山丹县| 哈巴河县| 宝山区| 诸暨市| 萍乡市| 剑河县| 盈江县| 乃东县| 博罗县| 当涂县| 东阳市| 朝阳市| 镶黄旗| 芷江| 桐城市| 新乡市| 马边| 榕江县| 靖州| 兴和县| 师宗县| 潍坊市| 辽阳市| 台中县| 东源县| 梧州市| 疏附县|