一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Lucene實(shí)現(xiàn)全文搜索引擎MYSearch的構(gòu)建

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-07-25 08:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

互聯(lián)網(wǎng)最初設(shè)計(jì)是為了能提供一個(gè)通訊網(wǎng)絡(luò),即使一些地點(diǎn)被核武器摧毀也能正常工作。如果大部分的直接通道不通,路由器就會(huì)指引通信信息經(jīng)由中間路由器在網(wǎng)絡(luò)中傳播。 最大的搜索引擎Google從2002年的10億網(wǎng)頁增加到現(xiàn)在近40億網(wǎng)頁;最近雅虎搜索引擎號(hào)稱收錄了45億個(gè)網(wǎng)頁;國(guó)內(nèi)的中文搜索引擎百度的中文頁面從兩年前的7 000萬頁增加到了現(xiàn)在的2億多。據(jù)估計(jì),當(dāng)前整個(gè)互聯(lián)網(wǎng)的網(wǎng)頁數(shù)達(dá)到100多億,而且還在快速增長(zhǎng)。用戶要在如此浩瀚的信息海洋里尋找信息,猶如“大海撈針”,往往無功而返。如何從資源的海洋里找到自己需要的內(nèi)容就成了關(guān)鍵問題,搜索引擎的出現(xiàn)和研究,使網(wǎng)絡(luò)上的資源變得有序,使用戶能更加方便快捷地找到所需資源。目前被大家廣泛使用的搜索引擎如Google、百度等,其實(shí)現(xiàn)技術(shù)非常復(fù)雜,后臺(tái)數(shù)據(jù)庫也非常龐大,更新速度也很快。

1 Lucene基本技術(shù)原理

Lucene是apache軟件基金會(huì)4 jakarta項(xiàng)目組的一個(gè)子項(xiàng)目,是一個(gè)開放源代碼的全文檢索引擎工具包,即它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。

作為一個(gè)開放源代碼項(xiàng)目,Lucene從問世之后,引發(fā)了開放源代碼社群的巨大反響,程序員們不僅使用它構(gòu)建具體的全文檢索應(yīng)用,而且將之集成到各種系統(tǒng)軟件中去,以及構(gòu)建Web應(yīng)用,甚至某些商業(yè)軟件也采用了Lucene作為其內(nèi)部全文檢索子系統(tǒng)的核心。apache軟件基金會(huì)的網(wǎng)站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse[9]的2.1版本中也采用了Lucene作為幫助子系統(tǒng)的全文索引引擎,相應(yīng)的IBM的商業(yè)軟件Web Sphere[10]中也采用了Lucene。Lucene以其開放源代碼的特性、優(yōu)異的索引結(jié)構(gòu)、良好的系統(tǒng)架構(gòu)獲得了越來越多的應(yīng)用。

目前網(wǎng)絡(luò)上有許多全文搜索引擎的開源代碼,若想構(gòu)建自己的全文搜索引擎,可以在這些開源代碼的基礎(chǔ)上進(jìn)行。Lucene不是一個(gè)完整的全文索引應(yīng)用,可以直接作為查詢工具使用,而只是為全文搜索引擎的構(gòu)建提供了基本的工具和設(shè)計(jì)方法。Lucene提供了一系列API,能夠?qū)ξ臋n進(jìn)行預(yù)處理、過濾、分析、索引和檢索排序。本文就是在Lucene基礎(chǔ)上構(gòu)建了一個(gè)全文搜索引擎MYSearch。

2 MYSearch工作流程

2.1 搜索引擎的基本構(gòu)成

搜索引擎系統(tǒng)一般由蜘蛛(也叫網(wǎng)頁爬行器)、切詞器、索引器、查詢器幾部分組成。蜘蛛負(fù)責(zé)網(wǎng)頁信息的抓取工作;一般情況下切詞器和索引器一起使用,它們負(fù)責(zé)將抓取的網(wǎng)頁內(nèi)容進(jìn)行切詞處理并自動(dòng)進(jìn)行標(biāo)引,建立索引數(shù)據(jù)庫;查詢器根據(jù)用戶查詢條件檢索索引數(shù)據(jù)庫并對(duì)檢索結(jié)果進(jìn)行排序和集合運(yùn)算,再提取網(wǎng)頁簡(jiǎn)單摘要信息反饋給查詢用戶。

2.2 MYSearch工作流程

MYSearch首先使用網(wǎng)絡(luò)蜘蛛抓取網(wǎng)絡(luò)上的可用網(wǎng)頁鏈接,然后把抓取到的網(wǎng)頁資源下載到本地計(jì)算機(jī),對(duì)下載到本地計(jì)算機(jī)的網(wǎng)頁進(jìn)行初步的處理,去掉對(duì)搜索沒有意義的信息和詞匯。然后使用Lucene提供的索引功能,對(duì)處理后的信息資源建立索引,并且保存到索引數(shù)據(jù)庫中。之后,根據(jù)用戶提供的搜索信息,在索引中進(jìn)行查詢,并將搜索結(jié)果顯示到用戶搜索的界面上。其流程框圖如圖1所示。

基于Lucene實(shí)現(xiàn)全文搜索引擎MYSearch的構(gòu)建

3 MYSearch實(shí)現(xiàn)

3.1 系統(tǒng)功能模塊的劃分

MYSearch全文搜索系統(tǒng)主要分為網(wǎng)絡(luò)蜘蛛抓取、資源初步處理、建立索引、搜索以及顯示等功能模塊。

(1)網(wǎng)絡(luò)蜘蛛抓取功能模塊:首先根據(jù)事先設(shè)定好的網(wǎng)絡(luò)入口地址和設(shè)置的搜索條件,讀取網(wǎng)頁的內(nèi)容,分析網(wǎng)頁中其他的鏈接地址,然后垂直鏈接到下一個(gè)網(wǎng)頁,這樣一直循環(huán),直到網(wǎng)站的所有網(wǎng)頁都抓取完成或者滿足了搜索的條件為止。

(2)資源初步處理功能模塊:將搜索來的網(wǎng)頁中的信息進(jìn)行相關(guān)處理,去掉沒有用的格式內(nèi)容和其他對(duì)搜索結(jié)果沒有實(shí)際意義的信息。

(3)建立索引功能模塊:將處理后的網(wǎng)頁資源寫入數(shù)據(jù)庫,并使用倒排索引算法實(shí)現(xiàn)網(wǎng)頁資源索引的建立。

(4)搜索功能模塊:根據(jù)用戶的搜索關(guān)鍵詞,在已建好索引的數(shù)據(jù)庫中,根據(jù)語素向量的匹配度和相似度進(jìn)行相關(guān)的匹配,然后按照一定的排列順序把搜索結(jié)果返回給用戶。

(5)顯示功能模塊:將搜索結(jié)果按照一定的顯示方式顯示在頁面中,供用戶選擇和瀏覽。

3.2 MYSearch全文搜索引擎的實(shí)現(xiàn)

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

網(wǎng)絡(luò)蜘蛛是指某個(gè)能以人類無法達(dá)到的速度不斷重復(fù)執(zhí)行某項(xiàng)任務(wù)的自動(dòng)程序[1]。本系統(tǒng)中使用的蜘蛛程序是Nutch,核心是Crawl工具。它可以根據(jù)之前設(shè)定好的入口URL列表不斷地自動(dòng)下載頁面,直到滿足系統(tǒng)預(yù)設(shè)的停止條件。圖2所示是Nutch的工作機(jī)制。

基于Lucene實(shí)現(xiàn)全文搜索引擎MYSearch的構(gòu)建

3.2.2 網(wǎng)頁初步處理

網(wǎng)頁剛剛被抓取下來的時(shí)候,存在很多格式化的信息(如html的網(wǎng)頁標(biāo)記),還有很多多余的信息(比如“is,the,an”)。這些信息都是噪音,如果想要使搜索引擎更高效、更準(zhǔn)確地運(yùn)行,就要去除這些信息,留下有效的信息。

對(duì)于html標(biāo)記的處理,首先就是準(zhǔn)備一個(gè)空字符串,然后判斷網(wǎng)頁的文字中是否存在html的“<>”符號(hào),如果是html“<>”的符號(hào),就繼續(xù)判斷網(wǎng)頁中的下一個(gè)字符,如果不是就把該字符保存到這個(gè)空字符串中;如果判斷完成,就結(jié)束;否則就繼續(xù)判斷。對(duì)于多余信息,在Lucene中提供了相關(guān)的包進(jìn)行處理。

通過上面的處理之后,下載的文件在建立索引的時(shí)候,就會(huì)更加便捷。

3.2.3 索引的建立

在日常的生活中,往往需要快速地從海量頁面信息中定位頁面資源。這樣的需求就需要用索引技術(shù)來實(shí)現(xiàn)。索引建立的好壞直接影響搜索效果和用戶的體驗(yàn)感覺,所以索引的建立方法十分重要。Lucene采用倒排索引算法建立索引[2],主要包括索引類(IndexWriter)、文檔對(duì)象類(Document)和信息字段對(duì)象類(Field)。索引建立的過程為:

(1)建立索引器IndexWriter;

(2)建立文檔對(duì)象Document;

(3)建立信息字段對(duì)象Field;

(4)將Field添加到Document;

(5)將Document添加到IndexWriter里面;

(6)關(guān)閉索引器IndexWriter。

Lucene將建好的索引信息存儲(chǔ)在“_0.cfs”、“segments.gen”以及“segments_s”文件中。

3.2.4 信息搜索

用戶提交的查詢請(qǐng)求通常是一個(gè)詞語或者短語,MYSearch搜索引擎在接受用戶訪問后會(huì)進(jìn)行一系列處理并最終向用戶提交。當(dāng)用戶輸入關(guān)鍵詞搜索后,由搜索程序從索引數(shù)據(jù)庫中找到符合該關(guān)鍵詞的所有相關(guān)文檔。因?yàn)樗形臋n針對(duì)該關(guān)鍵詞的相關(guān)度早已算好,所以只需按照現(xiàn)成的相關(guān)度數(shù)值排序。排序規(guī)則是相關(guān)度越高,排名就越靠前。然后,就會(huì)把查詢到的信息返回給用戶,并進(jìn)行顯示?;静樵兞鞒倘鐖D3所示。

基于Lucene實(shí)現(xiàn)全文搜索引擎MYSearch的構(gòu)建

3.2.5 搜索結(jié)果顯示

良好的交互設(shè)計(jì)可以使用戶的操作更加簡(jiǎn)便,可以使用戶能夠更快更準(zhǔn)確地找到自己想要的信息,同時(shí)能夠增加用戶的滿意度。MYSearch全文搜索引擎設(shè)計(jì)了一個(gè)簡(jiǎn)捷的搜索界面,用戶在該界面中輸入搜索條件,提交后就可以看到查詢結(jié)果。

4 改進(jìn)

搜索引擎(search engine)是指根據(jù)一定的策略、運(yùn)用特定的計(jì)算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對(duì)信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。分詞就是為生成索引提供原材料,如果分詞分得不明確,則生成的索引必然復(fù)雜,那些沒有實(shí)際意義的分詞被稱為噪音,噪音多了搜索速度必然下降。Lucene其實(shí)自身是帶有中文分詞功能的,主要采用“單字切分”和“二分法”,但是由于它沒有做到確定最小索引項(xiàng),因此無法去除噪音,搜索效率大大降低。IK_Canalyzer中文分析器是第三方實(shí)現(xiàn)的分析器,繼承自Lucene的Analyzer類。圖4(a)和圖4(b)分別為采用Lucene與IK_Canalyer分詞的顯示結(jié)果,可明顯看出后者優(yōu)于前者。

基于Lucene實(shí)現(xiàn)全文搜索引擎MYSearch的構(gòu)建

全文索引引擎是名副其實(shí)的搜索引擎,國(guó)外代表有Google,國(guó)內(nèi)知名的百度搜索。它們從互聯(lián)網(wǎng)提取各個(gè)網(wǎng)站的信息(以網(wǎng)頁文字為主),建立起數(shù)據(jù)庫,并能檢索與用戶查詢條件相匹配的記錄,按一定的排列順序返回結(jié)果。

MYSearch是基于Lucene設(shè)計(jì)實(shí)現(xiàn)的一個(gè)全文搜索引擎,本文給出了設(shè)計(jì)過程以及實(shí)驗(yàn)結(jié)果,并針對(duì)Lucene在中文分詞方面的不足給出了解決辦法。此外目前可以獲得的Lucene開源代碼中并沒有對(duì)PDF、Word、Excel等常用的文本格式進(jìn)行搜索。要想克服上述問題,就要對(duì)不同格式的文本進(jìn)行解析,把解析出來的文字提取出純文本,然后就像建立網(wǎng)頁的索引一樣,對(duì)提出來的文字建立索引,以便查詢。這將是進(jìn)一步需要改進(jìn)MYSearch全文搜索引擎的工作重點(diǎn)。

根據(jù)搜索結(jié)果的不同,全文搜索引擎可分為兩類:一類擁有自己的網(wǎng)頁抓取、索引、檢索系統(tǒng)(Indexer),有獨(dú)立的“蜘蛛”(Spider)程序、或爬蟲(Crawler)、或“機(jī)器人”(Robot)程序(這三種稱法意義相同),能自建網(wǎng)頁數(shù)據(jù)庫,搜索結(jié)果直接從自身的數(shù)據(jù)庫中調(diào)用,上面提到的Google和百度就屬于此類;另一類則是租用其他搜索引擎的數(shù)據(jù)庫,并按自定的格式排列搜索結(jié)果,如Lycos搜索引擎。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3839

    瀏覽量

    116717
  • 引擎
    +關(guān)注

    關(guān)注

    1

    文章

    366

    瀏覽量

    23000
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70739
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    [分享]最強(qiáng)山寨版搜索引擎震驚世界-熊熊搜索

    日前,一款名為“熊熊搜索”(Bearsou.com)的搜索引擎引起了不少網(wǎng)友的關(guān)注,這個(gè)搜索引擎一眼看去和普通搜索引擎區(qū)別不大,但仔細(xì)一看,這款搜索
    發(fā)表于 11-22 18:58

    參加搜索引擎營(yíng)銷SEM培訓(xùn)的好處?

    1. 可以快速學(xué)習(xí)搜索引擎營(yíng)銷(SEM)投放策略、方法和技術(shù),避免在自己摸索中浪費(fèi)時(shí)間;2. 可以快速學(xué)習(xí)到搜索引擎營(yíng)銷(SEM)最新優(yōu)化技術(shù),在頂尖SEM優(yōu)化公司指導(dǎo)下實(shí)實(shí)在在賺錢;3. 可以通過
    發(fā)表于 04-11 14:21

    基于網(wǎng)格技術(shù)的并行搜索引擎

    研究現(xiàn)有網(wǎng)格技術(shù)和搜索技術(shù),分析并行搜索引擎的優(yōu)點(diǎn)和不足,提出基于網(wǎng)格技術(shù)的并行搜索引擎解決方案,其中包含一個(gè)3 層結(jié)構(gòu)的應(yīng)用框架和一個(gè)并行搜索引擎的應(yīng)用方案。
    發(fā)表于 03-30 10:09 ?23次下載

    維、哈、柯全文搜索引擎檢索器的關(guān)鍵技術(shù)

    研究維、哈、柯全文搜索引擎檢索器的關(guān)鍵問題,提出有效的解決方法,包括在用戶計(jì)算機(jī)沒有安裝本地輸入法和字庫的情況下輸入維、哈、柯文檢索詞并正常顯示搜索結(jié)果,針對(duì)
    發(fā)表于 04-11 09:26 ?14次下載

    基于壓縮后綴數(shù)組技術(shù)的搜索引擎

    目前,搜索引擎的核心模塊(索引器)均采用倒排文件結(jié)構(gòu),對(duì)短語查詢的準(zhǔn)確率較低。該文引入后綴數(shù)組技術(shù)進(jìn)行全文索引,為克服全文索引時(shí)占用空間大的缺點(diǎn),研究了壓縮后綴數(shù)
    發(fā)表于 04-22 09:57 ?25次下載

    教育網(wǎng)BBS搜索引擎設(shè)計(jì)與實(shí)現(xiàn)

    BBS 是教育網(wǎng)的一大特色,也是傳統(tǒng)搜索引擎搜索的盲點(diǎn),本文系統(tǒng)介紹了根據(jù)教育網(wǎng)BBS 的特點(diǎn)建立BBS 搜索引擎的關(guān)鍵技術(shù)和實(shí)現(xiàn)方法。關(guān)鍵詞:搜索
    發(fā)表于 06-17 11:28 ?14次下載

    化工搜索引擎索引庫的研究和實(shí)現(xiàn)

    本文在對(duì)Lucene 全文檢索、索引開發(fā)包深入研究的基礎(chǔ)上,設(shè)計(jì)了多索引索引方案,有效地減少了索引
    發(fā)表于 12-18 16:27 ?13次下載

    開放源代碼的全文索引擎 Lucene

    開放源代碼的全文索引擎 Lucene――介紹、系統(tǒng)結(jié)構(gòu)與源碼實(shí)現(xiàn)分析 第一節(jié) 全文檢索系統(tǒng)與
    發(fā)表于 02-10 15:09 ?5次下載

    主題搜索引擎的研究

    介紹了將開源的全文檢索工具包Lucene嵌入到自己的搜索引擎中來滿足開發(fā)主題搜索引擎的需求。并基于Lucene中文分詞的不足設(shè)計(jì)了一個(gè)比較完
    發(fā)表于 07-05 16:30 ?11次下載

    網(wǎng)絡(luò)搜索引擎,網(wǎng)絡(luò)搜索引擎的工作原理

    網(wǎng)絡(luò)搜索引擎,網(wǎng)絡(luò)搜索引擎的工作原理 21 世紀(jì)是信息時(shí)代,隨著信息科學(xué)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)已成為人們生活中的重要組成部分,網(wǎng)上
    發(fā)表于 03-26 15:51 ?1513次閱讀

    基于JAVA技術(shù)的搜索引擎的研究與實(shí)現(xiàn)

    本文還利用Java技術(shù)對(duì)搜索引擎的三個(gè)核心部分即網(wǎng)絡(luò)蜘蛛、網(wǎng)頁索引、搜索進(jìn)行了實(shí)現(xiàn)。索引搜索
    發(fā)表于 05-07 14:14 ?35次下載
    基于JAVA技術(shù)的<b class='flag-5'>搜索引擎</b>的研究與<b class='flag-5'>實(shí)現(xiàn)</b>

    垂直搜索引擎是什么_垂直搜索引擎有哪些

    垂直搜索引擎是針對(duì)某一個(gè)行業(yè)的專業(yè)搜索引擎,是搜索引擎的細(xì)分和延伸,是對(duì)網(wǎng)頁庫中的某類專門的信息進(jìn)行一次整合,定向分字段抽取出需要的數(shù)據(jù)進(jìn)行處理后再以某種形式返回給用戶。垂直搜索是相對(duì)
    發(fā)表于 01-04 17:19 ?8413次閱讀

    介紹五個(gè)具有高級(jí)功能的搜索引擎

    數(shù)據(jù)庫里存儲(chǔ)的大量的信息對(duì)標(biāo)準(zhǔn)的搜索引擎來說是不可見的,標(biāo)準(zhǔn)的搜索引擎只是索引網(wǎng)站上的內(nèi)容,從一個(gè)鏈接到另一個(gè)鏈接。 隱匿搜索引擎專門用來搜索
    的頭像 發(fā)表于 04-04 09:13 ?7529次閱讀

    蘋果自研的搜索引擎干的過谷歌嗎?

    據(jù)TNW報(bào)道,蘋果正在加快研發(fā)自己的搜索引擎,以取代谷歌。推出自己的搜索引擎,將有利于蘋果的產(chǎn)品服務(wù)的推廣,同時(shí)削弱谷歌在搜索領(lǐng)域的壟斷地位。
    的頭像 發(fā)表于 12-22 14:54 ?2137次閱讀

    NAS下搭建linux命令搜索引擎教程

    前面寫到了程序?qū)S玫膙scode,今天再來介紹一款程序佬專用的搜索引擎——Linux命令搜索引擎。該引擎專用于搜索Linux下的各種命令,畢竟人的記憶力是有限的,當(dāng)你記不住某一個(gè)命令的
    的頭像 發(fā)表于 02-24 11:33 ?1378次閱讀
    NAS下搭建linux命令<b class='flag-5'>搜索引擎</b>教程