付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
全文檢索基EclipseHelp→HelpContents,可以查找出相關的幫助信Eclipse的所有幫助文件。 搜索引擎,如Baidu或 、音樂、等。下圖是使用搜索的效果:樂或搜索不是多搜索他們是按文件名搜索在智能上有一款音樂搜索的,10秒鐘的音樂,然后他就能上網找出這段音樂的名稱、演奏者等信息。這是多看到,是沒有“”這個結果的,結果頁面都是出現(xiàn)了這些詞的網頁:全文檢索(Full-TextRetrieval)是指以文本作為檢索對象,找出含有指定詞匯LuceneBLOGLuceneEclipse、Jira等。所以,學完Lucene后就可以為自已的系統(tǒng)增加全文檢索的功能。跟這個學習SQL查詢(所以不應進行對比。在數據庫中的搜索就是使用SQL,如:SELECT*FROMtWHEREcontentlike‘%ant%’。這樣會有如下問題:。相關度排序:查出的結果沒有相關度排序,不知道要的結果在哪一頁在使用個分數由高到低排列,所以第1頁的結果就是最想要的結果。。Lucene全文檢索就如同ORM,是一個概念。ORM的框架有很多種:Hibernate、TopLink、iBatis等,之前學習的是Hibernate。同樣的,全文檢索領域中也有多種框架,Lucene就是其中的一個用開源的全文檢索框架。:Lucene的主頁為。本文檔中所使用的Lucene:Lucene 實現(xiàn)建立索引功能(Indexer類Lucene的概從上可以看出,不僅要搜索,還要保證數據集合與索引庫的一致性。所以對于全文檢索功能的開發(fā),要做的有兩個方面:索引庫管理(索引庫中的數據、在索引庫Lucene就是操作索引庫的工具。LuceneAPI索引庫是一個,里面是一些二進制文件,就如同數據庫,所有的數據也是以文件的SQL語句一樣。庫中查詢使用IndexSearcherLucene的數據結構為 與Field 中有多個只需要把在的程序中的對象轉成,就可以交給Lucene管理了,搜 有了這些概念,可以寫oWorld了,其他的概念可以在寫完oWorld后再進倒排序索引的原理就如同查字典。要先查,得到數據對應的頁碼,在直接翻到指定的頁碼。不是在文章中找詞,而是從中找詞所在的文章。這需要在索引庫中生成一個詞匯表(,在詞匯表中的每一個條記錄都是類似于“詞→所在文檔的列表”的結構,檔的,再直接取出相應的文檔。查詢中僅包含一個,則在詞匯表中找到該單詞,并取出他對應的文檔就可以了。如果查詢中包含多個,則需要將各個單詞檢索出的記錄進行合并再取出相應的文檔記錄。如果詞匯表中有一個詞“傳智播客”對應的文檔列表為“1”。現(xiàn)在又有添加了一個包含索引文件的檢索與,更新是先刪除后創(chuàng), 做的操作:調用工具IndexWriter的add(doc),把 e做的操作把文檔存到索引庫中并自動定一個用來唯一標識條數據似于這數據的址在索引的數進行調后這個就可能會變時詞匯中也做相改變保證正如在外面這個前兩次去到的可是同一個檔以最好只在Lucene做的操作:更新詞匯表。把文本中的詞找出并放到詞匯表中,建立與文檔的對 yzer類,這是一個抽象類,切分詞的具體規(guī)則是由子類實現(xiàn)的,在把對象的屬性轉為Field時,相關代碼為:doc.add(newField("title",article.getTitle()Store.YESIndex.YZED))不屬性的 可以從這個屬性中查詢(No,或是查詢時可以查其中的某些詞(YZED個內容作為一個詞進行查詢(NOT_YZED正的去取出數據(。如下圖:1把要查詢字符串轉為Query對象。這就像在Hibernate中使用HQL查詢時,也要先調用Session.createQuery(hql)轉成Hibernate的Query對象一樣。把查詢字符串轉換成Query是使用QueryParser,或使用MultiFieldQueryParser。查詢字符串也要先經過yzer(分詞器。要求搜索時使用的yzer要與建立索引時使用的zyer要一致,否則可能搜不出正確的結果。totalHits代表決記錄數,ScoreDoc的數組。ScoreDoc是代表一個結果的相關度得分與文檔等信息的對象。3,取出要用到的數據列表。調用IndexSearcher.doc(scoreDoc.doc)以取出指定編 Lucene的API介構造方法1:IndexWriter(Directory yzera,MaxFieldLength構造方法2:IndexWriter(Directoryd, yzera,booleancreate,庫(刪除后重建;false表示使用已有的索引庫,如果不存在,就報錯。在索引庫中進行搜索是使用類IndexSearcher。創(chuàng)建其實例的構造方法為:IndexSearcherDirectorypath)IndexSearcher.close()方法QueryQueryParser可以理解的Query對象。使用的構造方法為:QueryParser(VersionmatchVersion,Stringf,yzera)2,是QueryParser的子類。與父類相比,MultiFieldQueryParser可以在多個屬性中搜索。使用的構造方法為:MultiFieldQueryParser(VersionmatchVersion,String[]fields,yzeryzer)索引數據與、Field的轉的問題。同樣,要索引庫中使用的是,也存在來回轉換的問題。如下圖: (Objectobject對象 doc) → 中的Field。由于Lucene只處理文本,所有所有的屬性值在前都要先轉成字符串。使用構造方法:Field(Stringname,Stringvalue,Storestore,Indexindex)。Store與Index都是枚舉類型。Store:指定是否把當前屬性值的原始內容到索引庫中。如果(YES在搜索出相應數據時這個屬性就有原始的值;如果不得到的數據的這個屬性的值為null。Index:指定是否建立索引(詞匯表。建立索引才能被搜索到。不可以不也不建立索引(沒有意義。Store//Lucene的API接口設計的比較通用,輸入輸出結構都很像數據庫的表==>記錄==>字段,所以很多傳統(tǒng)的應用的文件、數據庫等都可以比較方便的到Lucene的結構/Lucene當成一個支持全文索引的數據庫系統(tǒng)。Lucene的索引位置使用的是一個接口(抽象類,也就可以實現(xiàn)各種各樣的實際提供了兩個子類:FSDirectoryRAMDirectory。1,F(xiàn)SDirectory:在文件系統(tǒng)中,是真實的文件夾與文件。從索引庫中搜QuerynewIntRange(finalStringfield,Integermin,Integermax,finalbooleanminInclusive,finalbooleanmaxInclusive)newLongRange(finalStringfield,Longmin,LongfinalbooleanminInclusive,finalbooleanmaxInclusive)newFloatRange(finalStringfield,Floatmin,FloatfinalbooleanminInclusive,finalbooleanmaxInclusive)newDoubleRange(finalStringfield,Doublemin,DoublefinalbooleanminInclusive,finalbooleanpublicvoidadd(Termterm,intposition)publicvoidsetSlop(ints)例:addnewTerm(“namelucene”add(newTerm(“name”,“”,代表搜索的是“Lucene?”,?表示中間隔一個詞publicvoidadd(Queryquery,OccurOccur用于表示查詢子句關系的類,包括3SHOULDSHOULD,表示“或”關系,最終檢索結果為所有檢索子句的并集。BooleanQuery了。publicvoidtestMatchAllDocsQuery(){//查publicvoidtestTermQuery(){publicvoidtestRangeQuery(){publicvoidtestWildcardQuery(){publicvoidtestPhraseQuery(){//查publicvoidtestBooleanQuery(){通過改變文檔Boost值來改變排序結果。Boost是指索引建立過程中,給整篇文檔或者文檔的某一特定屬性設定的權值因子,在檢索時,優(yōu)先返回分數高的。通過Field指定Boost參數。不同在于前者對文檔中每一個域都修改了參數,而后者只針對指1F,一般不做修改。Sort對象定制排序。Sort支持的排序功能以文檔當中的域為單位,通過這種方IfyouwanttobeabletosortresultsbyaFieldvalue,youmustadditasaFieldthatisindexedbutnotyzed,usingField.Index.NOT_YZED.使用Filter可以對搜索結果進行過濾以獲得更小范圍的結果Filter對性能的Formatterformatter=newSimpleHTMLFormatter("<spanclass='kw'>",Scorerscorer=newHighlighterhighlighter=newHighlighter(formatter,scorer);highlighter.setTextFragmenter(newSimpleFragmenter(20));//使用高亮器:對content屬性值進行并高Stringtext=highlighter.getBestFragment(LuceneUtils.get "content",doc.get("content"));nullif(text!=null){}分詞是yzer類,這是一個抽象類,切分詞的具體規(guī)則是由子類實現(xiàn)的,所以對于不同的語詞的。這樣做可以搜索出有意義的結果。如搜索sutdent時,也可以搜索出ofword yzer就是這 yzer就是這樣。人”,效果為:“”、“”(使用極易分詞的MM 易分詞”,或者是“分詞”分詞器、IK 1,極易分詞:MM yzer,最后版本是1.5.3,更新時間是2007-12-05,不支持2,分詞:Paoding zyer,最后版本是2.0.4,更新時間是2008-06-03,不支持Lucene3.0中文分詞器使用IKyzer,主頁:實現(xiàn)了以詞典為基礎的正反向全切分,以及正反向最大匹配切分兩種方法。IKyzer是第實現(xiàn)的分詞器,繼承自Lucene的yzer類,針對中文文本進 @param@throwsprivatevoid yzer,Stringtext)ExceptionSystem.out.println("當前使用的分詞器:"+ TokenStreamtokenStream= yzer.tokenStream("content",newwhile(tokenStream.incrementToken()){TermAttributetermAttribute=}}Lucene應IndexDaoIndexDao,解決思路:對于上一段問題:保證索引庫中與數據庫中的數據一致(只要針對要進行搜索的數據。采用的方法是,在數據庫中做了相應的操作后,在索引庫中也做相應的操作。具體的索引庫操作,是通過調用相應的IndexDao方法完成的。IndexDao類Dao。不需要關心IndexDao的每個方法怎么實現(xiàn),因為那是下一步的事情。設計IndexDao如PublishAction.execute(){PublishAction.execute(){actionForm→articlearticleDao.savearticlearticleIndexDao.savearticle}DeleteAction.execute(){//刪除文章articleDao.delete(id);//從數據庫中刪除articleIndex.deleteid從索引庫中刪除}UpdateAction.executeac
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園教學活動組織參考方案
- 電商營銷推廣活動方案范文
- 年度顧客滿意度統(tǒng)計及改進方案
- 創(chuàng)意DIY手工藝品創(chuàng)業(yè)完整計劃書
- 無人機航測技術項目規(guī)劃與設計文檔
- 政務服務中心窗口業(yè)務辦理流程
- 生物學初中內容知識點提煉
- 跨境電商運營實戰(zhàn)方案與案例分析
- 預應力鋼絞線計算方法解析
- 制造企業(yè)設備維護管理流程標準化
- 2026中國電信四川公用信息產業(yè)有限責任公司社會成熟人才招聘備考題庫及1套完整答案詳解
- 2025班組三級安全安全教育考試題庫(+答案解析)
- CRM培訓教學課件
- 安徽省亳州市2025屆高三上學期期末質量檢測生物試卷(含答案)
- 天津市考市直面試真題題+解析
- 研究受試者知情同意書
- 常州工業(yè)職業(yè)技術學院輔導員招聘筆試真題2025年附答案
- 杜瓦罐供貨合同范本
- 2026年云南高考語文總復習:專題02:非連續(xù)性文本閱讀主觀題(知識梳理+考點)(解析版)
- 2025年水利工程質量檢測員考試(混凝土工程)全真模擬試題及答案及答案(云南省)
- 戰(zhàn)場適應性訓練
評論
0/150
提交評論