国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Lucene 的中文分詞全文搜索引擎設(shè)計與實現(xiàn)

2015-07-13 08:23:28李炳練
電腦知識與技術(shù) 2015年13期
關(guān)鍵詞:搜索引擎

李炳練

摘要:基于Lucene的全文檢索開源項目基礎(chǔ)上,采用PaodingAnalyzer中文分詞器,設(shè)計了一個基于中文環(huán)境的高效分詞與全文搜索引擎系統(tǒng),實現(xiàn)多種類型文件內(nèi)容的文本全文檢索功能。

關(guān)鍵詞: 全文搜索;中文分詞;搜索引擎;Lucene

中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)13-0236-02

Abstract: This paper design and implement an efficient Chinese segmentation search engine based on Lucene and PaodingAnalyzer, which mainly for dealing with Chinese words to improve the ability of full text search system.

Key words: full text search; chinese segmentation; search engine; lucene

基于關(guān)鍵字的文本搜索是信息系統(tǒng)最重要最常用的功能之一,而開放源代碼的Lucene全文檢索技術(shù)是信息檢索領(lǐng)域廣泛使用的基本技術(shù),被大量的集成到各種系統(tǒng)軟件以及構(gòu)建Web應(yīng)用系統(tǒng)中去,作為軟件的全文檢索子系統(tǒng)的核心?;陉P(guān)鍵字的文本搜索首先要解決分詞問題,雖然Lucene內(nèi)置了分詞器功能,但無法支持復(fù)雜的中文分詞。因此,本文在比較各類中文分詞器的基礎(chǔ)上,采用PaodingAnalyzer分詞器代替Lucene內(nèi)置分詞器,與Lucene共同構(gòu)建起一個中文環(huán)境下高效、準確的全文搜索引擎系統(tǒng)。

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

1.1 Lucene

Lucene是apache軟件基金會jakarta項目組下的一個子項目,是一個開放源代碼的全文檢索引擎工具包[1]。作為一個開放源代碼項目,Lucene發(fā)布后,引發(fā)了開放源代碼社區(qū)的熱烈反應(yīng),開發(fā)者不僅使用它構(gòu)建具體的全文檢索應(yīng)用,而且將Lucene整合到各種系統(tǒng)軟件以及各種Web應(yīng)用中,甚至也有商業(yè)軟件也采用Lucene作為其全文檢索子系統(tǒng)的核心。

采用Lucene構(gòu)建全文搜索引擎不僅在于其開源、免費,而且在于高性能、純JAVA跨平臺應(yīng)用,方便移植可重用;Lucene作為一個全文檢索引擎,其突出的技術(shù)應(yīng)用優(yōu)勢是不僅在傳統(tǒng)全文檢索引擎的倒排索引的基礎(chǔ)上,實現(xiàn)了分塊索引,而且設(shè)計了獨立于語言和文件格式的文本分析接口;還實現(xiàn)了一套強大的查詢引擎,用戶無需自己編寫代碼即可使系統(tǒng)可獲得強大的查詢能力。

1.2 PaodingAnalyzer中文分詞器

當(dāng)前基于Lucene的中文分詞器主要有PaodingAnalyzer、imdict、mmseg4j、ik等四種。從是否支持用戶自定義詞庫、運行速度、算法與代碼復(fù)雜度、開發(fā)者與開發(fā)社區(qū)活躍度等方面綜合分析權(quán)衡,本系統(tǒng)最終采用PaodingAnalyzer分詞器來實現(xiàn)中文分詞功能。

PaodingAnalyzer中文分詞器,又稱庖丁解牛中文切詞器2[2]。PaodingAnalyzer基于Java的開源中文分詞組件,提供lucene和solr接口,具有極高效率和高擴展性。它采用基于不限制個數(shù)的詞典文件對文章進行有效切分,支持最大/最小切詞。字典靈活且文件個數(shù)不限、名稱不限、只要符合以dic作為擴展名的文件均視為字典。可以根據(jù)需要加減字典目錄以及目錄下的字典。

2 系統(tǒng)設(shè)計與實現(xiàn)

在本搜索引擎系統(tǒng)中,采用基于Lucene全文檢索引擎開源項目為系統(tǒng)開發(fā)核心,并整合PaodingAnalyzer中文分詞器以解決Lucene中不支持中文分詞問題,系統(tǒng)由三大模塊組成:文件索引模塊、搜索查詢模塊與搜索結(jié)果排序與顯示模塊。

系統(tǒng)的工作流程是,首先對通過爬蟲等方法收集起來的所有文檔建立索引;其次是設(shè)計開發(fā)查詢分析器對用戶查詢請求進行分詞與匹配查找;最后把查找結(jié)果通過排序算法與關(guān)鍵字高亮顯示等方式反饋到查詢客戶端。各模塊工作原理與相互協(xié)作流程系統(tǒng)整體框架圖如圖1所示:

2.1 文件索引

系統(tǒng)中待索引文件可用網(wǎng)絡(luò)爬蟲,手工等方式收集,文件格式可以為html、doc、ppt、xls、pdf、txt等文檔。在建立文件索引前首先必須通過文件格式轉(zhuǎn)換器對特定的文件格式采用相對應(yīng)的解釋類對文檔進行格式轉(zhuǎn)換與清洗,如PDF格式文件通過 PDFBox類解釋,Word 和 Excel 通過POI類解析,并最終將文檔內(nèi)容轉(zhuǎn)換成字節(jié)流。建立索引之前必須進行中文分詞,PaodingAnalyzer中文分詞器對通過格式轉(zhuǎn)換器生成的字節(jié)流進行中文分詞處理。最后通過索引創(chuàng)建器中Lucene索引類中IndexWriter方法對所有文檔建立索引并對索引進行存儲,在索引結(jié)束時使用 Lucene 的 wirter.optimize( ) 方法優(yōu)化索引。索引創(chuàng)建過程如圖1中的系統(tǒng)工作流程圖所示。

2.2搜索查詢

在客戶端輸入查詢關(guān)鍵字后,首先使用中文分詞器接收傳遞過來的查詢數(shù)據(jù),進行合理的中文分詞處理,再使用分割的關(guān)鍵字查詢搜索索引,查找到對應(yīng)的關(guān)鍵字以及關(guān)聯(lián)的文件,最后將結(jié)果反饋回客戶端。

Lucene中IndexSeacher類是搜索操作的入口,所有搜索操作都是通過IndexSeacher實例使用一個重載的search方法來實現(xiàn)。具體的Query子類為每一種特定類型的查詢進行邏輯上的封裝。Query實例被傳遞到IndexSearcher的search方法中。QueryParser 將用戶輸入的查詢表達式處理為一個具體的Query對象。

2.3搜索結(jié)果處理

通過關(guān)鍵字搜索,獲取文檔的URL,并利用文件系統(tǒng)解析到結(jié)果界面。Lucene的默認搜索結(jié)果排序是按照文檔的得分進行排序的。當(dāng)檢索結(jié)果集中有兩個文檔具有相同的得分時,默認按照文檔的ID對結(jié)果進行排序。還可以使用Sort排序工具實現(xiàn)個性化排序,方法如下:Lucene在查詢的時候,可以通過以一個Sort作為參數(shù)構(gòu)造一個檢索器IndexSearcher,在構(gòu)造Sort的時候,指定排序規(guī)則。

Lucene搜索結(jié)果分頁,與讀取數(shù)據(jù)庫表的分頁類似,每次僅取出前10條記錄,這樣避免了內(nèi)存溢出的可能,但是每次搜索都要進行一次IO操作,如果大并發(fā)訪問的情況下,對服務(wù)器硬盤的轉(zhuǎn)速與處理器的頻率性能要求較高。

在搜索結(jié)果頁面中,還使用關(guān)鍵字加粗高亮顯示。在org.apache.Lucene.search.highlight包中提供了關(guān)于高亮顯示檢索關(guān)鍵字的工具。

3 系統(tǒng)測試

選擇html、doc、pdf、txt四種類型文檔各10份,每份文檔文本包含“計算機科學(xué)技術(shù)”相關(guān)內(nèi)容,首先對文檔進行中文分詞,然后對其建立中文索引,最后使用關(guān)鍵字搜索。測試的結(jié)果如下:

PaodingAnalyzer中文分詞器對“計算機科學(xué)技術(shù)”分詞后的結(jié)果是:計算 計算機 計算科學(xué) 科學(xué) 技術(shù) 科學(xué)技術(shù) 計算科學(xué) 計算技術(shù)。中文分詞器基本符合分詞要求。在客戶端輸入以上相關(guān)的關(guān)鍵字搜索,都能成功搜索出有相關(guān)內(nèi)容的測試文檔機及內(nèi)容。

4 結(jié)束語

基于Lucene的中文分詞全文搜索引擎系統(tǒng)經(jīng)過測試,性能較為穩(wěn)健,準確率也較高,基本滿足中文環(huán)境下的搜索需求,但文件的索引速度與構(gòu)建實時索引方面還有較大的完善空間,其次,搜索查詢速度較為緩慢,主要原因是每次運行,都會進行索引的加載,影響了性能,后期將對其進行緩存,可大幅度提升搜索的速度。

參考文獻:

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

[2] 費洪曉,康松林,朱小娟,等.基于詞頻統(tǒng)計的中文分詞的研究[J]. 計算機工程與應(yīng)用,2005(7).

猜你喜歡
搜索引擎
Chrome 99 Canary恢復(fù)可移除預(yù)置搜索引擎選項
世界表情符號日
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
基于Lucene搜索引擎的研究
知識漫畫
百科知識(2012年11期)2012-04-29 08:30:15
一種自反饋式元搜索系統(tǒng)的設(shè)計
搜索引擎,不止有百度與谷歌
永胜县| 贵港市| 两当县| 临洮县| 庆云县| 嘉义市| 卢氏县| 孟连| 厦门市| 喀喇沁旗| 永吉县| 从江县| 锡林浩特市| 夹江县| 沙湾县| 旌德县| 安福县| 巨野县| 高邮市| 龙井市| 南乐县| 仙桃市| 罗田县| 苏尼特左旗| 清苑县| 化隆| 罗甸县| 泌阳县| 太谷县| 武功县| 邵东县| 包头市| 阿瓦提县| 隆回县| 府谷县| 阜南县| 东阿县| 靖江市| 绍兴县| 宁海县| 喀喇沁旗|