全文檢索及l(fā)ucene原理使用總結(jié)_第1頁
全文檢索及l(fā)ucene原理使用總結(jié)_第2頁
全文檢索及l(fā)ucene原理使用總結(jié)_第3頁
全文檢索及l(fā)ucene原理使用總結(jié)_第4頁
全文檢索及l(fā)ucene原理使用總結(jié)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

全文檢索及Lucence

全文檢索是計(jì)算機(jī)程序通過掃描文章中的每一個(gè)詞,對(duì)每一個(gè)詞建立一個(gè)索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置。當(dāng)用戶查詢時(shí)根據(jù)建立的索引查找,類似于通過字典的檢索字表查字的過程。全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索效勞的軟件系統(tǒng)。

一、全文檢索現(xiàn)狀目前常見全文檢索技術(shù):1.百度、谷哥等專業(yè)搜索引擎系統(tǒng)。2.數(shù)據(jù)庫類型的全文檢索。3.java以Lucence為代表的全文檢索系統(tǒng)。4.php以Sphinx為代表的全文檢索系統(tǒng)。5.以TRS為代表其他語言及商業(yè)全文檢索系統(tǒng)。

專業(yè)搜索引擎專業(yè)搜索引擎提供了群眾化的全網(wǎng)的內(nèi)容搜索。優(yōu)點(diǎn):使用免費(fèi),搜索便捷。缺點(diǎn):過于群眾化,很多專業(yè)數(shù)據(jù)被淹沒在信息的海洋之中,不便于與應(yīng)用系統(tǒng)相結(jié)合。數(shù)據(jù)庫類型全文檢索

大多數(shù)主流數(shù)據(jù)都提供全文檢索功能,如Oracle、Mysql、SqlServer等。

優(yōu)點(diǎn):和數(shù)據(jù)庫整合到一塊,不需要獨(dú)立建立系統(tǒng),方便管理,使用方便。

缺點(diǎn):擴(kuò)展不便,索引和查詢都不夠靈活方便,會(huì)影響數(shù)據(jù)庫運(yùn)行性能。Lucence開源搜索引擎核心確切的講,Lucence不是完整的搜索引擎,它只是一個(gè)開發(fā)包。

優(yōu)點(diǎn):自定義索引格式,容易部署,方便擴(kuò)展,提供豐富強(qiáng)大的查詢實(shí)現(xiàn),可以對(duì)任一可以影響到結(jié)果的功能進(jìn)行定制。

缺點(diǎn):還未產(chǎn)品化,還存在著一些特定場合的問題。Sphinx一種可以和Mysql配合使用的全文檢索系統(tǒng)優(yōu)點(diǎn):高速、海量,算法優(yōu)秀,支持分布式,功能、接口豐富,發(fā)行版本支持多平臺(tái)。缺點(diǎn):有待學(xué)習(xí)接觸。Lucence簡介基于Java的全文信息檢索工具包Lucene目前是ApacheJakarta家族中的一個(gè)開源工程,下載:///基于Java編寫,并有.NET同構(gòu)產(chǎn)品以及其他語言實(shí)現(xiàn)。Lucence突出優(yōu)點(diǎn)〔1〕索引文件格式獨(dú)立于應(yīng)用平臺(tái)?!?〕在傳統(tǒng)全文檢索引擎的倒排索引的根底上,實(shí)現(xiàn)了分塊索引〔3〕優(yōu)秀的面向?qū)ο蟮南到y(tǒng)架構(gòu)〔4〕設(shè)計(jì)了獨(dú)立于語言和文件格式的文本分析接口〔5〕已經(jīng)默認(rèn)實(shí)現(xiàn)了一套強(qiáng)大的查詢引擎數(shù)據(jù)分類結(jié)構(gòu)化數(shù)據(jù):具有固定格式或者有限長度的數(shù)據(jù)如數(shù)據(jù)庫、元數(shù)據(jù)等。非結(jié)構(gòu)化數(shù)據(jù):指不固定長度或者不固定格式的數(shù)據(jù)如郵件、word文檔等。非結(jié)構(gòu)化數(shù)據(jù)的另一種叫法全文數(shù)據(jù)。

搜索分類結(jié)構(gòu)化數(shù)據(jù)搜索:用sql對(duì)數(shù)據(jù)庫搜索,利用操作系統(tǒng)命令對(duì)文件類型的元數(shù)據(jù)按照文件大小、擴(kuò)展名、修改時(shí)間等屬性進(jìn)行搜索等。對(duì)非結(jié)構(gòu)化數(shù)據(jù)搜索:如操作系統(tǒng)進(jìn)行文件內(nèi)容關(guān)鍵詞的檢索;再如用google百度進(jìn)行的海量信息檢索。非結(jié)構(gòu)化信息的檢索

順序掃描法:

特點(diǎn):方便、簡單、速度慢。先索引再進(jìn)行搜索法:

特點(diǎn):需要先進(jìn)行索引才能進(jìn)行查找,查找速度快。又稱全文檢索。

全文檢索全文檢索大致分為兩個(gè)局部:索引創(chuàng)立、搜索索引。于是全文檢索就存在如下三個(gè)問題:1、索引里存著什么?2、如何創(chuàng)立索引?3、如何進(jìn)行索引搜索?索引鏈表反向索引結(jié)構(gòu)圖通過合并鏈表查出既包含Lucence又包含Solr的文件索引過程組織文檔將原始文檔進(jìn)行分詞處理(Tokenizer)得到詞元(Token)語言組件處理(變?yōu)樾?、?fù)數(shù)變單數(shù)、動(dòng)詞變?cè)?將得到的詞Term傳遞給索引組件:1.利用所得到的Term創(chuàng)立一個(gè)字典2.對(duì)字典進(jìn)行字母排序3.合并相同詞Term成為文檔倒排(PostingList)鏈表。倒排文檔鏈表PostingList查詢索引過程用戶輸入查詢語句對(duì)查詢語句進(jìn)行詞法分析語法分析及語言處理詞法:單詞和關(guān)鍵字語法分析:根據(jù)與語法規(guī)那么形成語法樹語言處理:和索引過程幾乎相同搜索索引得到符合語法樹的文檔得到查詢語句的相關(guān)性對(duì)結(jié)果排序LucenceandlearnednotHadoop語法樹

處理過的語法樹相關(guān)性與分值Lucence軟件架構(gòu)①查詢②訪問③索引存儲(chǔ)索引④內(nèi)存存儲(chǔ)⑤文件系統(tǒng)⑥分析⑦語料庫用戶界面圖例

實(shí)現(xiàn)協(xié)議LucenceAPI介紹org.apache.Lucene.search搜索入口org.apache.Lucene.index索引入口org.apache.Lucene.analysis語言分析器org.apache.Lucene.queryParser查詢分析器org.apache.Lucene.document存儲(chǔ)結(jié)構(gòu)org.apache.Lucene.store底層IO/存儲(chǔ)結(jié)構(gòu)org.apache.Lucene.util一些公用的數(shù)據(jù)結(jié)構(gòu)Lucene應(yīng)用實(shí)例以搜索文本文檔(*.txt)為例假定指定目錄沒有子目錄文檔索引代碼FileindexDir=newFile(“D:\\luceneIndex〞); //此目錄用于存儲(chǔ)生成的索引FiledataDir=newFile(“D:\\luceneData〞); //需要建立索引的目錄〔假定其沒有子目錄〕AnalyzerluceneAnalyzer=newCJKAnalyzer();//中日韓詞法分析IndexWriterindexWriter=newIndexWriter(indexDir,luceneAnalyzer,true);File[]dataFiles=dataDir.listFiles();for(FilecurrentFile:dataFiles){ if(currentFile.isFile()&¤tFile.getName().endsWith(".txt")){ Documentdocument=newDocument(); ReadertxtReader=newFileReader(currentFile); document.add(Field.Text("path",currentFile.getCanonicalPath())); document.add(Field.Text("contents",txtReader)); indexWriter.addDocument(document); }}indexWriter.optimize();indexWriter.close();文檔查詢代碼StringqueryStr=“whichyouwant";

FileindexDir=newFile("D:\\luceneIndex");if(!indexDir.exists()){ System.out.println("TheLuceneindexisnotexist"); return;

}FSDirectorydirectory=FSDirectory.getDirectory(indexDir,false);IndexSearchersearcher=newIndexSearcher(directory);Termterm=newTerm("contents",queryStr.toLowerCase());TermQueryluceneQuery=newTermQuery(term);Hitshits=searcher.search(luceneQuery);for(inti=0;i<hits.length();i++){ Documentdocument=hits.doc(i); System.out.println("File:"+document.get("path"));}全文檢索常見問題文檔域的存儲(chǔ)設(shè)置分詞分析器個(gè)性化實(shí)現(xiàn)文檔檢索高亮顯示查詢過程查詢分頁、排序索引建立過程異常處理局部搜索結(jié)果搜索不到索引內(nèi)容的刪除、更新全文檢索常見問題中文分詞處理文章相關(guān)內(nèi)容計(jì)算法分布式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論