999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Lucene的多源數據全文檢索的研究與實現

2018-08-22 01:23:36邱敏明任洪敏顧利軍
現代計算機 2018年22期
關鍵詞:系統

邱敏明,任洪敏,顧利軍

(上海海事大學信息工程學院,上海 201306)

0 引言

在當今社會,軟件開發的速度、規模都在快速提升,軟件開發過程中產生的文檔無論是文檔的存在格式還是存儲方式都存在著各種方式。在文檔的格式層面有.doc、.docx、.pdf等;在存儲方式層面,有存儲在本地磁盤的、MySQL數據庫、Git倉庫等幾種方。這些文檔就是檢索系統的數據,文檔的存儲地方則是檢索系統的數據源。如何從多種數據源中快速有效地檢索到期望的數據,這點在企業日常的開發中日益受到重視。

由于數據的多樣性,這里的多樣性不僅僅是數據之間的格式差異,也包括了不同數據的不同屬性,同時也還有數據存儲方式的差異性。所以對索引的創建提出了較為苛刻、復雜的要求。基于Lucene的全文檢索系統,通過使用Lucene提供的接口,提出了利用XML配置文件的方式來降低數據多樣性帶來復雜度,同時通過配置文件來實現檢索的多樣性的方式。系統還針對如何保證檢索結果的準確性和有效性的問題,提出了通過注冊監聽服務的方式,來即時獲取數據的變化,再根據這些變化即時調整相關的索引,以此來保證索引的有效性。

1 系統模型

1.1 Lucene簡介

Lucene是一個高性能的Java全文檢索工具包而不是完整的全文檢索引擎,它提供了完整的查詢和索引引擎以及部分的文本分析引擎。

Lucene具有如下突出的優點:

(1)索引文件格式獨立于應用平臺。

(2)它提供了一套強大的查詢引擎,Lucene的查詢實現中默認實現了布爾查詢、模糊查詢等,開發人員可以使用這些查詢接口。

1.2 系統模型

基于Lucene的全文檢索系統將主要用于提供文檔的快速檢索,這些文檔的來源主要是本地的文件系統、MySQL數據庫以及Git倉庫。圖1展示了系統的主要結構。

系統主要由四個部分構成,一是數據獲取模塊、二是索引創建模塊、三是檢索模塊、四是數據展示模塊。該系統將作為一個獨立的檢索工具為用戶提供簡單有效的文檔檢索工具。

圖1 系統結構

2 索引創建

2.1 Lucene及其索引文檔

首先需要了解需要用到的Lucene的索引。

●文檔(Document):文檔在索引和搜索的時候都會用到,是索引和搜索的基本單位(類似于關系數據庫關系表中的記錄),在搜索的時候根據這些內容進行匹配,找到的也是一個個匹配的文檔,然后再從文檔中找出需要的內容,進行還原。

●域(Field):域是文檔中真正用來匹配的東西,Lucene中文檔是由域構成,每個域都有其名稱、類型和值。

●分析器(Analyzer)/詞元(Term):

分析器同樣是在索引和搜索的時候都需要用到,分析器是把原始文檔(或者用戶輸入)解析成一個個的詞語(稱為詞元),Lucene的索引就是一種倒排索引的結構,存儲的是從詞元到文檔的映射。原始文檔通過分析器轉換成詞元然后將詞元和文檔的映射關系存儲為索引,用戶搜索時分析器將用戶的輸入轉換為詞元然后到索引中去查找匹配的文檔。圖2是各個類型的文檔創建索引的過程,主要包括,讀取文檔、解析文檔、再將解析的文檔利用Lucene進行索引創建。這個過程其實就是將普通的文檔轉換成Lucene能夠識別的文檔。

圖2 索引創建流程

2.2 索引模型設計

通過XML的Schema和Lucene的索引文檔格式的比較,為檢索系統設計了如下Schema模型:

圖3 XML Schema模型

這樣設計可以達到以下幾點效果:

(1)可以對文檔按所屬項目進行分類,實現分類檢索;

(2)實現索引內容的可配置化,降低對不同格式文檔創建索引時的復雜性;

(3)可以數據根據數據來源庫進行分類,利于顯示數據來源;

(4)實現索引內容的可配置化,靈活調整需要索引的庫、表、字段;

(5)實現數據讀取自動化。

2.3 索引創建

在完成索引模型設計之后,通過調用Lucene提供的索引創建API,即可完成索引工作。在索引創建的過程中,有一步很重要的工作,那就是“分詞”。

分詞主要是將一段語句進行切分,例如“我是一個學生。”這句話可以被切分成“我”、“是”、“一個”、“學生”這幾個詞。然后系統就將這幾個詞作為“Term”保存在索引文件中,因為Lucene索引文件中的最小單位是詞元(Term),在檢索的時候其實也是匹配詞元的。

基于Lucene的多源數據全文檢索系統采用的是IKAnalyzer這一分詞器,而并非是Lucene提供的Smart ChineseAnalyzer。圖4是兩個分詞器對于同一段語句的分詞結果。

可以看出Lucene自帶的Smart ChineseAnalyzer在切分語句中包含的英文單詞時,英文單詞被切分后與原單詞出入較大,相比IKAnalyzer則沒有出現該問題,并且IKAanlyzer有著其他好處:

(1)IKAnalyzer可以設置切分粒,支持細粒度分詞;

(2)實現了Lucene的分詞接口的同時也支持獨立分詞系統;

(3)可以配置自己的語境字典,策略很隨意。

3 索引數據的實時更新

索引文件的準確性是保證檢索結果有效性的關鍵,在數據源中數據發生改變但未更新索引文件時就會導致檢索的結果不準確。所以基于Lucene的全文檢索系統采用了數據訂閱與消費組合的模式來處理增量數據,以此來保證索引文件的有效性。

3.1 增量索引

在上一節中提到的索引創建過程,是用于系統初始化時創建索引的,這種方式稱之為全量索引。但在系統開始運行后,若有新的文檔被添加到數據源或原有文檔數據在數據源中發生更改,為了保證用戶檢索結果的準確性,必定需要更新原有的索引。如果還是采用全量索引的方式來更新,就會存在以下幾點缺點:

(1)耗時長。創建索引所消耗的時間主要取決于帶索引數據的量,在大數據量的情況下,索引創建將消耗大量時間;

(2)檢索結果準確性不受保證。若原有數據已發生改變,但全量索引還未完成,那么這時的檢索結果將會顯示數據未更新時的狀態,那么檢索結果就不是正確的。

正是以上缺點,基于Lucene的全文檢索系統采用增量索引的方式來更新索引。

增量索引,即,對新增的數據進行索引。這里新增的數據并不僅僅只限于“Add”操作產生的數據,同時也包含了“Update”和“Delete”操作帶來的數據變更。系統對些變化了的數據進行索引更新處理,這樣就能保證檢索結果的正確性。由于這些數據變更操作主要是來源于其他應用,同時,該檢索系統是作為獨立的檢索工具來使用,要求對其他應用的依賴性和侵入性有很好的控制,所以檢索系統采用了以下的模式來實現增量索引。

3.2 數據訂閱與消費模式

數據訂閱與消費,分為數據訂閱和數據消費兩個動作。數據訂閱主要是用來捕捉變化的數據,數據消費是指將獲取到的變化了的數據進行索引。這完成兩個步驟即可實現所需的增量索引。

(1)數據訂閱

對于本地文件系統,系統采用Java Listener監聽器的方式,對目標目錄進行監測,當有文件變動時就會捕捉到變動的文件以及具體的變動形式。

對于MySQL數據庫,通過注冊監聽服務,并解析其二進制文件的方式來獲取數據庫中的數據變更。

對于Git倉庫,利用Git Hooks可以及時得到倉庫內文件的變更。當有Git的提交操作時,通過Hooks就能抓取到操作的內容。

通過這三種方式就實現了對不同數據源的數據訂閱操作。通過訂閱數據的方式來實現增量索引可以在減少檢索系統對其他系統的侵入性和依賴性。

圖4 分詞結果圖

(2)數據消費

數據消費是指系統的索引服務將獲取到的增量的數據進行轉化從原始的格式轉換成Lucene可識別的索引文件。這個過程亦可稱為增量更新。這樣保證了索引文件的準確性,在一定程度上實現了索引的實時性,同時不會對原有的索引文件有太大變動,不會對整個系統的檢索的服務產生較大影響。圖5展示的是系統采用的數據訂閱與消費模型。

圖5 數據訂閱與消費模型

4 檢索及檢索結果

4.1 多樣化的檢索

基于Lucene的多源數據檢索系統提供了多種檢索方式有常見的模糊檢索也有精確檢索。迷糊檢索提供的是廣而全的檢索結果,精確檢索提供的是細而精的檢索結果。

(1)建立制造業企業分類目錄,推動勞動密集型制造業轉移、轉型或退出。政府應順應勞動力成本上升的形勢,科學地建立制造業企業分類目錄,依據所建立的目錄推動勞動密集型制造業轉移、轉型或退出,改變制造業企業的“粗放型”發展方式,引導制造業結構優化。

(1)模糊檢索

模糊檢索是檢索系統最基本的檢索功能,系統會將獲取到的待檢索內容在系統的三個數據源的索引文件中進行檢索,這樣的模糊檢索就類似于SQL語句中用“like”關鍵詞一樣,只要包含了搜索關鍵字的數據,都被檢索出來。

(2)精確檢索

基于Lucene的多源數據檢索系統也提供了精確檢索的功能。由于檢索粒度相較模糊檢索會小很多,所以檢索結果的量也會小很多,主要是針對精細化檢索。

4.2 檢索的實現

檢索總的來說其實就是從Lucene的索引文件中搜索的與關鍵字匹配索引記錄的操作,但這一步操作可以細分成多個步驟。

第一步是將檢索內容進行分詞,這一步也是整個檢索的關鍵一步,目的是將長句進行切分,以此獲得Lucene索引的最小單位“Term”,然后再按最小單位保存在索引文件中。所以檢索時也需要用相同的分詞器將頁面輸入的待檢索值進行分詞,如果不是用相同的分詞器,對相同內容的切分結果或許會有不同,那么就會導致待檢索內容和索引文件里面的關鍵字不匹配,這樣就導致了檢索結果不正確,所以必須使用和創建索引時相同的分詞器。

第二步是將經過處理的檢索內容和現有的索引文檔進行比較得到與檢索內容相關的索引文檔。

第三步是將獲得的索引文檔按照相關度進行打分。在給索引文檔打分的過程涉及到一個很重要的步驟,那就是計算權重(Term weight)。計算權重是指找出詞(Term)對文檔的重要性的過程稱。影響一個詞(Term)在一篇文檔中的重要性主要有兩個因素:

(1)Term Frequency(TF):即此 Term 在此文檔中出現了多少次。TF越大說明越重要。

(2)Document Frequency(DF):即有多少文檔包含次Term。DF越大說明越不重要。

如果詞(Term)在文檔中出現的次數越多,說明此詞(Term)對該文檔越重要,如“搜索”這個詞,在本文檔中出現的次數很多,說明本文檔主要就是講這方面的事的。然而在一篇英語文檔中,this出現的次數更多,就說明越重要嗎?不是的,這是由第二個因素進行調整,第二個因素說明,有越多的文檔包含此詞(Term),說明此詞(Term)太普通,不足以區分這些文檔,因而重要性越低。Lucene就根據這兩個因素,設計了給索引得到的文檔進行打分的計算公式:

其中 queryNorm(q):queryNorm(q)是查詢權重對得分的影響,這個因素對所有文檔都是一樣的值,所以它不影響排序結果;

tf(t in d):即term t在文檔d中出現的個數;

idf(t):關聯到反轉文檔頻率,文檔頻率指出現term t的文檔數docFreq。docFreq越少idf就越高(物以稀為貴),但在同一個查詢下些值是相同的;

boost(t):查詢時期term的加權,這個就是一個影響值;

norm(t,d):這個項是長度的加權因子,目的是為了將同樣匹配的文檔,比較短的放比較前面。

最后按照文檔得分進行排序,得到了索引結果順序。圖6為系統運行結果圖,搜索包含“上海海事lucene”的文檔,最終搜索結果如圖6所示。

在檢索服務剛啟動時,由于不可避免的文件的I/O操作導致了耗時增加到500毫秒左右,但再進行檢索時,檢索耗時可降低到100毫秒左右,整個的效率還是很可觀的。

5 結語

基于Lucene的多源數據檢索系統提供了快捷方便的文檔檢索操作,提供了多樣化的檢索方式。同時由于采用可配置劃的方式來實現索引創建工作,使得整個系統更加方便,且易維護,而且實現了對于第三方程序最低程度的依賴和侵入性,實現了較高的獨立性。

圖6

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 亚洲中文字幕在线一区播放| 99国产精品一区二区| 国产精品第一区在线观看| 一级成人a毛片免费播放| 免费高清a毛片| 波多野结衣一区二区三区AV| 欧美午夜视频| 男人的天堂久久精品激情| 免费可以看的无遮挡av无码| 综合色在线| 国产精品手机视频| 久久精品人人做人人爽电影蜜月| 乱系列中文字幕在线视频| 亚洲成A人V欧美综合| 国产亚洲高清在线精品99| 国产91全国探花系列在线播放| 精品久久久久久成人AV| 亚洲成人高清无码| 国产亚洲高清视频| 在线国产资源| 蜜桃视频一区二区| 大陆精大陆国产国语精品1024| 欧美日在线观看| 亚洲成人77777| 99视频免费观看| 亚洲国产天堂久久综合| 亚洲AV成人一区二区三区AV| 午夜精品影院| 波多野结衣一区二区三区四区| 国产69精品久久久久孕妇大杂乱| 少妇极品熟妇人妻专区视频| 免费在线看黄网址| 1769国产精品免费视频| 激情成人综合网| 亚洲午夜国产精品无卡| 国产探花在线视频| 成·人免费午夜无码视频在线观看| 日韩在线成年视频人网站观看| 久久精品中文无码资源站| 亚洲av无码久久无遮挡| 国产免费人成视频网| 中文字幕 91| 久久综合九九亚洲一区 | 欧美翘臀一区二区三区| 久草视频精品| 日韩精品一区二区三区大桥未久| 亚洲综合久久成人AV| 日本少妇又色又爽又高潮| 青草精品视频| 71pao成人国产永久免费视频| 亚洲欧美在线看片AI| 18禁色诱爆乳网站| 国模视频一区二区| 亚洲综合中文字幕国产精品欧美| 色综合激情网| 尤物国产在线| 亚洲国产中文在线二区三区免| 午夜免费小视频| 亚洲综合婷婷激情| 久久国产乱子伦视频无卡顿| 人妻21p大胆| 亚洲香蕉在线| 国产一级精品毛片基地| 尤物精品视频一区二区三区| 91热爆在线| 亚洲永久精品ww47国产| 全裸无码专区| 亚洲精品国产乱码不卡| 亚洲视频二| 亚洲一级毛片在线观播放| 国产人免费人成免费视频| 久久久久久尹人网香蕉 | 91精品视频在线播放| 久久久久亚洲AV成人人电影软件| 99在线观看视频免费| 99青青青精品视频在线| 色偷偷一区二区三区| 正在播放久久| 国产一级裸网站| 国产福利2021最新在线观看| 国产一级毛片网站| 色屁屁一区二区三区视频国产|