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

基于Lucene全文檢索引擎的應(yīng)用研究

2010-11-27 01:45:56朱雪蓮
關(guān)鍵詞:搜索引擎引擎數(shù)據(jù)庫(kù)

朱雪蓮

(新疆藝術(shù)學(xué)院基礎(chǔ)部(思政部),新疆 烏魯木齊 830049)

Lucene作為一個(gè)開(kāi)放源代碼全文檢索工具包,具有優(yōu)異的索引結(jié)構(gòu)和良好的系統(tǒng)架構(gòu),不僅可以通過(guò)它來(lái)構(gòu)建具體的全文檢索應(yīng)用,而且能方便地集成到各種系統(tǒng)軟件中,本文對(duì)Lucene進(jìn)行深入的研究和分析,以此為基礎(chǔ)設(shè)計(jì)實(shí)現(xiàn)了一個(gè)以商業(yè)網(wǎng)站中構(gòu)建搜索引擎的實(shí)例。

1 全文檢索引擎Lucene

1.1Lucene 概述

Lucene是用Java寫(xiě)的全文檢索引擎工具包,并不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),可以提供多個(gè)應(yīng)用程序編程接口函數(shù)和數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),并能方便地嵌入到各種應(yīng)用中,從而實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引/檢索功能。

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

Lucene的系統(tǒng)結(jié)構(gòu)中運(yùn)用了面向?qū)ο蟮脑O(shè)計(jì)思想,定義的索引文件格式與平臺(tái)無(wú)關(guān),并通過(guò)抽象將系統(tǒng)的核心組成部分和具體的平臺(tái)部分設(shè)計(jì)為抽象類,與具體平臺(tái)相關(guān)的部分例如文件存儲(chǔ)也封裝為類,經(jīng)過(guò)層層處理,形成了一個(gè)低耦合、高效率、容易二次開(kāi)發(fā)的檢索引擎系統(tǒng)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。

從圖1看到Lucene系統(tǒng)是由基礎(chǔ)結(jié)構(gòu)封裝、索引核心、對(duì)外接口三大部分組成。其中索引核心部分是系統(tǒng)的重點(diǎn)。 Lucene中共有7個(gè)子包,每個(gè)包的具體功能見(jiàn)表1,核心類包主要有:org.apache.lucene.analysis;org.apache.lucene.Index;org.apache.lucene.search。

表1 Lucene的組成結(jié)構(gòu)

1.3 Lucene全文索引機(jī)制

Lucene索引存儲(chǔ)結(jié)構(gòu)采用層次結(jié)構(gòu),主要由索引、字段、文檔、字、詞組成,在存儲(chǔ)正向信息時(shí)通常是按層次保存從索引到詞的包含關(guān)系,即Lucene索引文件由若干段(Segment,相當(dāng)于表)組成,每一段由若干的文檔(document,相當(dāng)于表中記錄)組成,每一個(gè)文檔由若干的域(Field,相當(dāng)于表中字段)組成,每一個(gè)域由若干的項(xiàng)(Term,相當(dāng)于表中數(shù)據(jù))組成;而反向信息則保存了詞典到倒排表的映射。因此,索引存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)比較通用,輸入輸出結(jié)構(gòu)類似于數(shù)據(jù)庫(kù)中的表→記錄→字段,很多文件、數(shù)據(jù)庫(kù)等都能較為方便地映射到Lucene的索引存儲(chǔ)結(jié)構(gòu)/接口中。

Lucene訪問(wèn)索引的時(shí)間較快,這是因?yàn)榇蟛糠謹(jǐn)?shù)據(jù)庫(kù)引擎是用B樹(shù)來(lái)維護(hù)索引結(jié)構(gòu)的,更新索引時(shí)會(huì)導(dǎo)致大量的輸入和輸出操作,而通過(guò)Lucene構(gòu)建的索引文件在擴(kuò)展索引時(shí),是將新創(chuàng)建的小索引文件定期地合并到原先的大索引文件中,從而提高了索引效率。

2 基于Lucene構(gòu)建搜索引擎的具體應(yīng)用

在實(shí)現(xiàn)利用Lucene構(gòu)建搜索引擎的具體應(yīng)用時(shí),以在商業(yè)網(wǎng)站中構(gòu)建一個(gè)搜索引擎為例,通過(guò)爬蟲(chóng)將各大IT門戶網(wǎng)站提供的商品信息抓取下來(lái),然后對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行數(shù)據(jù)信息抽取并轉(zhuǎn)換為統(tǒng)一格式的文本文件,并構(gòu)建專業(yè)數(shù)據(jù)庫(kù)和主題詞典,同時(shí)將詞典內(nèi)容擴(kuò)充到中文分詞模塊中;中文分詞模塊對(duì)文件處理器處理生成的文本文件進(jìn)行分詞處理,并提供詞元序列供索引器索引,并將索引結(jié)果保存到索引數(shù)據(jù)庫(kù)中;使用Tomcat Web服務(wù)器發(fā)布系統(tǒng)的檢索頁(yè)面,當(dāng)用戶通過(guò)Web界面輸入要查詢的關(guān)鍵詞并提交后,搜索器到索引數(shù)據(jù)庫(kù)中進(jìn)行檢索,檢索到的結(jié)果經(jīng)過(guò)處理之后,作為響應(yīng)發(fā)送給用戶。系統(tǒng)結(jié)構(gòu)如圖2所示。本文將介紹與Lucene相關(guān)的設(shè)計(jì)與實(shí)現(xiàn),并利用Lucene工具包提供的類對(duì)其擴(kuò)展來(lái)實(shí)現(xiàn)具體的應(yīng)用。

首先對(duì)抓取下來(lái)的網(wǎng)頁(yè)內(nèi)容進(jìn)行結(jié)構(gòu)化的抽取,并對(duì)抽取的內(nèi)容按固定格式保存、完成主題詞庫(kù)的構(gòu)建、產(chǎn)品數(shù)據(jù)庫(kù)的構(gòu)建、數(shù)據(jù)庫(kù)處理類的構(gòu)建等幾項(xiàng)任務(wù),為后續(xù)的索引入庫(kù)、檢索打下基礎(chǔ)。

2.1 索引庫(kù)的建立

在索引階段需要定義Lucene的Document格式和構(gòu)建索引的處理類。Lucene的索引庫(kù)是通過(guò)接口添加一條條索引記錄實(shí)現(xiàn)的,首先需要構(gòu)造一個(gè)Document文檔對(duì)象,確定Document的各個(gè)域,IndexWriter負(fù)責(zé)接收新加入的文檔,并寫(xiě)入索引庫(kù)中。

本實(shí)例中ProductDocument類靜態(tài)方法為一個(gè)Product對(duì)象構(gòu)建 Lucene的 Document,當(dāng)中包含了 7個(gè) Field,分別為 identifier(產(chǎn)品 ID)、indextime(索引時(shí)間)、producturl(產(chǎn)品 URL)、category(產(chǎn)品分類)、name(產(chǎn)品名稱)、type(產(chǎn)品型號(hào))、all。前6個(gè) Field與數(shù)據(jù)庫(kù)中的內(nèi)容有直接的對(duì)應(yīng)關(guān)系,而 all則是將 category(產(chǎn)品分類)、name(產(chǎn)品名稱)、type(產(chǎn)品型號(hào))拼接起來(lái),為用戶搜索時(shí)提供一個(gè)默認(rèn)Field。具體定義如表2所示。

表2 ProductDocument類中Field屬性配置情況

關(guān)鍵代碼如下:

下面的代碼是索引類的代碼,它用于向Lucene索引中添加 Document。

在initialize方法中,初始化了一個(gè) JE分詞的MMAnalyzer實(shí)例,然后將生成的主題詞庫(kù)添加到該實(shí)例中。addProduct方法將兩個(gè)參數(shù)Product和 id傳遞到Product-Document.bulidProductDocument方法里,然后調(diào)用IndexWriter的addDocument方法,把生成的產(chǎn)品加入到索引中。至此,數(shù)據(jù)庫(kù)與索引的建立結(jié)束。

2.2 檢索

Lucene的檢索接口主要由 QueryParser、IndexSearcher、Hits三個(gè)類構(gòu)成,QueryParser是查詢分析器,IndexSearcher是索引搜索器,檢索時(shí),用戶提交檢索關(guān)鍵字,先調(diào)用Lucene的查詢分析器分析用戶提交的查詢,然后調(diào)用IndexSearcher類進(jìn)行搜索;返回結(jié)果為 Hits類,通過(guò)它再訪問(wèn)Document=>Field中的內(nèi)容。

本文在深入剖析Lucene的系統(tǒng)結(jié)構(gòu)和索引機(jī)制的基礎(chǔ)上,實(shí)現(xiàn)了一個(gè)商業(yè)領(lǐng)域搜索引擎的實(shí)例,檢索的結(jié)果由結(jié)構(gòu)化的數(shù)據(jù)組成,描述針對(duì)性很強(qiáng),響應(yīng)速度快、查準(zhǔn)率高。今后,將進(jìn)一步增加對(duì)動(dòng)態(tài)頁(yè)面的索引和語(yǔ)義分析來(lái)提高搜索的精度。

[1]管建和,甘劍峰.基于Lucene全文檢索引擎的應(yīng)用研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,1.28(2):489-491.

[2]車東.在應(yīng)用中加入全文檢索功能—基于Java的全文索引引擎 Lucene簡(jiǎn)介[EB/OL].http://www.chedong.com/tech/lucene.html.2009.03.20.

[3]邱哲,符滔滔.開(kāi)發(fā)自己的搜索引擎[M].北京:人民郵電出版社,2007.

[4]李廣麗,劉覺(jué)夫.垂直搜索引擎的研究與實(shí)現(xiàn)[J].情報(bào)雜志,2009,10.28(10):144-147,169.

猜你喜歡
搜索引擎引擎數(shù)據(jù)庫(kù)
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
無(wú)形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開(kāi)發(fā)
基于Nutch的醫(yī)療搜索引擎的研究與開(kāi)發(fā)
廣告主與搜索引擎的雙向博弈分析
主站蜘蛛池模板: 国产美女无遮挡免费视频网站| 99爱在线| 天天色综网| 国产精品成人第一区| 日本91视频| 97国产在线视频| 国产麻豆永久视频| 久久久久久久蜜桃| 69av免费视频| 美女国内精品自产拍在线播放| 国产自产视频一区二区三区| 久久久久久久蜜桃| 欧美一区日韩一区中文字幕页| 国产精品永久免费嫩草研究院| 视频一区视频二区中文精品| 国产精品亚洲а∨天堂免下载| 99无码熟妇丰满人妻啪啪| av免费在线观看美女叉开腿| www.国产福利| 国产人成在线视频| 毛片大全免费观看| 国产亚洲现在一区二区中文| 国产一区二区视频在线| 一本大道东京热无码av| 波多野结衣一区二区三区88| 无码免费的亚洲视频| 欧洲日本亚洲中文字幕| 亚洲精品第一页不卡| 亚亚洲乱码一二三四区| 成人精品在线观看| 亚洲成a人片77777在线播放 | 欧洲高清无码在线| 欧美在线一级片| 噜噜噜久久| 91丨九色丨首页在线播放| 国产自产视频一区二区三区| 亚洲水蜜桃久久综合网站| 中文国产成人精品久久| 青青草一区二区免费精品| 在线免费不卡视频| 成人国产精品2021| 国产欧美日韩va另类在线播放| 久久久久久久97| 国产成人免费高清AⅤ| 丝袜国产一区| 中文一区二区视频| 91精品啪在线观看国产91| 91久久精品日日躁夜夜躁欧美| 最新国产精品鲁鲁免费视频| 欧美视频在线第一页| 久久99国产乱子伦精品免| 免费人欧美成又黄又爽的视频| 国产极品美女在线播放| 青草国产在线视频| 色国产视频| 91精品国产综合久久香蕉922| 国产全黄a一级毛片| 丰满人妻被猛烈进入无码| 97se亚洲综合在线天天| 国产精品主播| 日韩欧美综合在线制服| 999精品免费视频| a级毛片毛片免费观看久潮| av一区二区无码在线| 国产色伊人| 99在线视频免费观看| 免费国产好深啊好涨好硬视频| 亚卅精品无码久久毛片乌克兰| 亚洲色图另类| jizz国产在线| 国内毛片视频| 欧美激情网址| 五月婷婷综合网| 国产白浆一区二区三区视频在线| 天天综合色天天综合网| 制服丝袜国产精品| 欧美日韩久久综合| 久久国产香蕉| 亚洲天堂网视频| 精品国产自在现线看久久| 看国产一级毛片| 性欧美久久|