精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁(yè)電子技術(shù)論文

講師論文范文全文檢索引擎Lucene系統(tǒng)模型與應(yīng)用研究

發(fā)布時(shí)間: 1

  大數(shù)據(jù)是現(xiàn)如今非常流行的一種技術(shù),人類已經(jīng)逐步邁向大數(shù)據(jù)時(shí)代了,很多高校也都開(kāi)設(shè)了這門專業(yè)。本文就是一篇軟件開(kāi)發(fā)專業(yè)的講師論文范文,主要論述了全文檢索引擎Lucene系統(tǒng)模型與應(yīng)用研究。
  摘要:大數(shù)據(jù)時(shí)代下信息爆炸式增長(zhǎng),全文檢索技術(shù)是提高信息檢索效率的有效方法。Lucene是一個(gè)采用Java編寫(xiě)的全文搜索引擎框架,它運(yùn)用了面向?qū)ο蟮脑O(shè)計(jì)思想,提供了豐富的API。對(duì)Lucene的系統(tǒng)結(jié)構(gòu)、索引流程、索引機(jī)制進(jìn)行了詳細(xì)分析,對(duì)應(yīng)用Lucene引擎搭建全文搜索系統(tǒng)的關(guān)鍵問(wèn)題進(jìn)行了研究。

  關(guān)鍵詞:全文檢索,Lucene,倒排索引,分詞

  作者簡(jiǎn)介作者簡(jiǎn)介:張吳波(1977-),男,湖南邵陽(yáng)人,湖北汽車工業(yè)學(xué)院電氣與信息工程學(xué)院講師,研究方向?yàn)檐浖_(kāi)發(fā)。

  0 引言

  大數(shù)據(jù)時(shí)代,可利用的數(shù)據(jù)和信息量呈爆炸式增長(zhǎng),人們?cè)讷@取更多信息的同時(shí),也不可避免地增加了篩選信息的難度[1]。面對(duì)海量數(shù)據(jù),如何使用戶更好、更準(zhǔn)確地抓取所需信息,已成為信息化技術(shù)中一個(gè)非常重要的課題。全文檢索技術(shù)是為用戶提供快速、準(zhǔn)確獲取有效信息的重要方法。

  1 全文檢索技術(shù)

  全文檢索是以各種計(jì)算機(jī)數(shù)據(jù),諸如文字、聲音、圖像等為處理對(duì)象,提供按照數(shù)據(jù)資料的內(nèi)容,而不是外在特征來(lái)實(shí)現(xiàn)的信息檢索手段[2]。相對(duì)于一般的DBMS,可以將Word文檔、郵件、網(wǎng)頁(yè)等非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)作為檢索對(duì)象。

  全文檢索最初是以字符串匹配程序?qū)崿F(xiàn)的,即在待查找的文件中,打開(kāi)每個(gè)文件后,對(duì)文件內(nèi)容從頭到尾檢索,如果其中包含需要查詢的字符串,則將它作為結(jié)果文件。這種順序檢索效率較低,因此,全文檢索都是通過(guò)“索引”技術(shù)實(shí)現(xiàn)的。其過(guò)程是由計(jì)算機(jī)索引程序掃描文件中的每一個(gè)詞,然后對(duì)每個(gè)詞建立一個(gè)索引,并指明該詞在文章中出現(xiàn)的次數(shù)和位置。當(dāng)用戶查詢時(shí),由檢索程序?qū)σ呀⒌乃饕M(jìn)行查找,得到所需要的文件[3]。

  2 全文搜索引擎Lucene

  Lucene是一個(gè)非常優(yōu)秀、成熟、開(kāi)源、免費(fèi)、采用Java語(yǔ)言編寫(xiě)的全文檢索引擎工具。它提供了豐富的API,可以與存儲(chǔ)在索引中的信息方便地交互,并能方便地嵌入到各種應(yīng)用系統(tǒng)中,實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引/檢索功能。

  Lucene運(yùn)用了大量的面向?qū)ο笤O(shè)計(jì)思想。首先定義了一個(gè)與平臺(tái)無(wú)關(guān)的索引文件格式,其次通過(guò)抽象系統(tǒng)的核心組成部分設(shè)計(jì)為抽象類,具體的平臺(tái)實(shí)現(xiàn)部分設(shè)計(jì)為抽象類的實(shí)現(xiàn),此外與具體平臺(tái)相關(guān)的部分比如文件存儲(chǔ)也封裝為類,經(jīng)過(guò)層層的面向?qū)ο笫教幚,最終達(dá)成一個(gè)低耦合、高效率、容易二次開(kāi)發(fā)的檢索引擎系統(tǒng)[4]。

  目前,Lucene得到了廣泛應(yīng)用,許多Java項(xiàng)目都使用了Lucene作為其后臺(tái)的全文搜索引擎,比較著名的有:Jive(Web論壇系統(tǒng))、Eyebrows(郵件列表HTML歸檔/瀏覽/查詢系統(tǒng))、Cocoon(基于XML的Web發(fā)布框架)等。

  3 Lucene系統(tǒng)模型

  3.1 Lucene系統(tǒng)結(jié)構(gòu)

  Lucene搜索引擎由基礎(chǔ)結(jié)構(gòu)封裝、索引核心、對(duì)外接口、查詢分析器4大部分組成,如圖1所示。

  索引核心是Lucene的重點(diǎn),主要包括索引管理和數(shù)據(jù)存儲(chǔ)管理。其中org.apache.lucene.index包實(shí)現(xiàn)對(duì)索引的建立、刪除等操作[5],通過(guò)為每個(gè)分出的詞建立索引,查詢時(shí)只需遍歷索引,從而極大地提高檢索效率;org.apache.lucene.store包實(shí)現(xiàn)對(duì)索引文件的存儲(chǔ)管理;A(chǔ)結(jié)構(gòu)封裝是Lucene的基礎(chǔ),包括文檔管理和公用類。其中org.apache.lucene.document實(shí)現(xiàn)對(duì)文檔信息和域信息的管理;org.apache.lucene.util作為公共類,實(shí)現(xiàn)一些優(yōu)化的數(shù)據(jù)結(jié)構(gòu)和算法。對(duì)外接口包括檢索和語(yǔ)言分析器,org.apache.lucene.analysis是語(yǔ)言分析器,主要用于切分詞,把輸入的文本分成一個(gè)個(gè)可供索引模塊處理的“詞語(yǔ)”。org.apache.lucene.search是檢索管理器,提供用戶檢索接口,可以實(shí)現(xiàn)根據(jù)用戶輸入的查詢條件進(jìn)行查詢。org.apache.lucene.QueryParser是查詢分析器,其作用是解析用戶輸入的查詢語(yǔ)句,對(duì)查詢語(yǔ)句進(jìn)行分析,然后返回一個(gè)查詢對(duì)象(query),它還可以自定義查詢規(guī)則,以實(shí)現(xiàn)像Google一樣能支持查詢條件的與、或、非等復(fù)合查詢方式。

  3.2 Lucene檢索流程

  基于Lucene的全文搜索,包含索引管理和搜索索引兩個(gè)基本過(guò)程,其數(shù)據(jù)處理流程如圖2所示。

  3.2.1 索引管理

  在創(chuàng)建索引時(shí),先將被索引(待搜索的數(shù)據(jù))的內(nèi)容,作為文檔(Document)信息,傳給IndexWriter對(duì)象,在IndexWriter對(duì)象中,指定語(yǔ)言分析器Analyzer。語(yǔ)言分析器自動(dòng)對(duì)文檔進(jìn)行分詞處理,將文檔分成一個(gè)個(gè)單獨(dú)的單詞,其中還要進(jìn)行去除標(biāo)點(diǎn)符號(hào)和停用詞(像英語(yǔ)中的a、the、or等使用頻率很多的冠詞、介詞、副詞或連詞)等處理,形成“詞元(Token)”。詞元傳遞給語(yǔ)言處理器進(jìn)行相關(guān)處理,形成“詞(Term)”,對(duì)于英語(yǔ)形式的詞元進(jìn)行語(yǔ)言處理時(shí),一般做以下工作:將詞元變?yōu)樾?xiě)、將詞元縮減為詞根形式(例如“cars”轉(zhuǎn)換成“car”)、將詞元轉(zhuǎn)變?yōu)樵~根形式(例如“drove”轉(zhuǎn)換“drive”)等。最后索引組件依據(jù)語(yǔ)言處理產(chǎn)生的詞形成詞典,采用倒排索引法,形成一定數(shù)據(jù)結(jié)構(gòu)的索引文件。

  3.2.2 搜索索引

  Lucene是針對(duì)索引進(jìn)行查詢的。先將用戶輸入的查詢信息傳遞給QueryParser對(duì)象,該對(duì)象采用建立索引時(shí)類似的分詞方法和語(yǔ)言處理方法,得到需要查詢的單詞和查詢關(guān)鍵詞;再根據(jù)查詢語(yǔ)句的語(yǔ)法規(guī)則,進(jìn)行語(yǔ)法分析,創(chuàng)建一棵語(yǔ)法樹(shù),形成Query對(duì)象;最后由IndexSearcher對(duì)象打開(kāi)、讀取索引目錄中的索引文件,在反向索引表中,分別找出需要查詢的單詞文檔鏈表,并根據(jù)語(yǔ)法樹(shù)對(duì)文檔鏈表進(jìn)行交、差、并等操作,得到結(jié)果文檔。   3.3 Lucene索引機(jī)制

  索引是Lucene進(jìn)行全文搜索的基礎(chǔ),關(guān)系到檢索的效率。在Lucene中,分析器只能對(duì)文本數(shù)據(jù)進(jìn)行解析,并產(chǎn)生索引,對(duì)于其它類型的數(shù)據(jù),需要將其轉(zhuǎn)換成文本數(shù)據(jù)后,提交給分析器進(jìn)行處理。Lucene在管理索引時(shí),是通過(guò)索引文件管理的,在索引文件中既保存正向信息,也保存反向信息。

  3.3.1 正向信息

  在Lucene中,索引結(jié)構(gòu)是一種層次結(jié)構(gòu)。索引(index)由段(segment)組成,段由記錄(document)組成,記錄由域(field)組成,域由詞(term)組成。每個(gè)層次都保存了本層次的信息以及下一層次的元信息,也即屬性信息[6],其結(jié)構(gòu)如圖3所示。

  3.3.2 反向信息

  反向信息是索引文件的核心,記錄的是倒排索引表。倒排索引源于實(shí)際應(yīng)用中根據(jù)屬性的值來(lái)查找記錄的方式。索引表中的每一項(xiàng)都包括一個(gè)屬性值和該屬性值記錄的地址。在Lucene中,索引表中的項(xiàng)是文檔單詞,其屬性是包含單詞的文檔號(hào)、在文檔中的出現(xiàn)頻次及位置,如圖4所示。反向信息主要包括倒排索引表中的詞典(Term Dictionary)和倒排表(Posting List)。

  4 Lucene應(yīng)用

  Lucen提供了全文檢索框架,具備完整的查詢引擎和索引引擎,為數(shù)據(jù)訪問(wèn)和管理提供了簡(jiǎn)單的函數(shù)調(diào)用接口。在應(yīng)用Lucene搭建全文檢索系統(tǒng)時(shí),由于應(yīng)用領(lǐng)域不同,需要進(jìn)行二次開(kāi)發(fā),以擴(kuò)展系統(tǒng)功能。

  4.1 構(gòu)建數(shù)據(jù)采集器

  能被Lucene索引的數(shù)據(jù)是文本數(shù)據(jù)。實(shí)際應(yīng)用中,待檢索數(shù)據(jù)有許多種格式和來(lái)源,例如:PDF文件、Word文件、XML文件,以及互聯(lián)網(wǎng)的網(wǎng)頁(yè)文件。在具體實(shí)施時(shí),需要按照應(yīng)用需求,對(duì)這些不同格式的文件分別進(jìn)行處理,從中提取出純文本格式信息,并建立對(duì)應(yīng)的Lucene文檔,再提交給索引管理器進(jìn)行索引。

  在處理PDF文件、Word文件等二進(jìn)制文件時(shí),可以借助第三方的接口和應(yīng)用程序,對(duì)文件進(jìn)行數(shù)據(jù)提取。例如在處理PDF文件時(shí),可以使用PDFBox接口進(jìn)行文件分析并提取數(shù)據(jù);在處理Word文件時(shí),可以使用JACOB、POI等從中提取數(shù)據(jù)等;在處理互聯(lián)網(wǎng)上的網(wǎng)頁(yè)時(shí),可以通過(guò)網(wǎng)絡(luò)爬蟲(chóng)等方式對(duì)網(wǎng)頁(yè)數(shù)據(jù)抓取,并使用網(wǎng)頁(yè)分析技術(shù),先去掉其中的HTML標(biāo)記,再提取網(wǎng)頁(yè)內(nèi)容。

  4.2 擴(kuò)展分詞器

  Lucene在org.apache.lucene.analysis中定義了接口,提供了可供應(yīng)用系統(tǒng)使用的語(yǔ)言處理能力。Lucene默認(rèn)已經(jīng)實(shí)現(xiàn)了英文等語(yǔ)言的簡(jiǎn)單詞法分析邏輯(按照空格分詞,并去除常用的語(yǔ)法詞,如英語(yǔ)中的is、am、are等)。但是,在具體應(yīng)用時(shí),由于每個(gè)語(yǔ)種的習(xí)慣和處理詞的方法差異較大,例如在漢語(yǔ)中詞語(yǔ)的分割與英語(yǔ)就有很大的不同。因此,使用Lucene提供的ChineseAnalyzer和CJKAnalyzer對(duì)中文分詞效果并不明顯,不能滿足系統(tǒng)對(duì)中文的分詞要求,此時(shí)可以采用analysis接口實(shí)現(xiàn)的方式,自定義分詞算法,以實(shí)現(xiàn)對(duì)中文的個(gè)性化分詞。

  5 結(jié)語(yǔ)

  Lucene本質(zhì)上是一個(gè)信息檢索的類庫(kù)(Library),它具有高效、簡(jiǎn)潔、易用的特點(diǎn),在信息檢索中有著非常廣泛的應(yīng)用。Lucene采用了倒排索引技術(shù),實(shí)現(xiàn)了高效的索引管理和檢索。Lucene只以文本格式的數(shù)據(jù)作為索引對(duì)象,在實(shí)際應(yīng)用中,可以開(kāi)發(fā)針對(duì)各種不同類型數(shù)據(jù)的采集器,以擴(kuò)展系統(tǒng)數(shù)據(jù)處理的廣度;可以在Lucene提供的分詞器基礎(chǔ)上,針對(duì)語(yǔ)言系統(tǒng)特點(diǎn),開(kāi)發(fā)新的分詞器,以擴(kuò)展系統(tǒng)數(shù)據(jù)處理的深度。

  參考文獻(xiàn)

  [1]劉東君.基于Lucene非結(jié)構(gòu)化文檔全文檢索系統(tǒng)研究與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2013,12(10):100102.

  [2]李永春.Lucene的全文檢索的研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(2):1215.

  [3]李明宙.Lucene全文檢索引擎的結(jié)構(gòu)機(jī)制與應(yīng)用方式[J].廣西科學(xué)院學(xué)報(bào),2012,26(4):433435.

  [4]周平.Lucene全文檢索引擎技術(shù)及應(yīng)用[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué)版,2007,21(4):8688.

  [5]何偉.基于Lucene的全文搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].情報(bào)雜志,2006(9):8890.
  講師論文發(fā)表期刊推薦《計(jì)算機(jī)與現(xiàn)代化》雜志成為“中國(guó)科技核心期刊”、“中國(guó)科技論文統(tǒng)計(jì)源期刊”! 《計(jì)算機(jī)與現(xiàn)代化》系《中國(guó)學(xué)術(shù)期刊綜合評(píng)價(jià)數(shù)據(jù)庫(kù)來(lái)源期刊》;《中國(guó)學(xué)術(shù)期刊(光盤版)》、《中國(guó)期刊網(wǎng)》、《中國(guó)數(shù)字化期刊群》、《中國(guó)核心期刊(遴選)數(shù)據(jù)庫(kù)》全文引用期刊。


轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.jinnzone.com/dianzijishulw/53298.html