版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Eclipse的所有幫助文件。在BBS、BLOG、等系統(tǒng)中提供的搜索文章的功能,如這里的貼吧的例子。搜索的 PPT、、音樂、等。下圖是使用搜索的效果樂或搜索不是多搜索他們是按文件名搜索在智能上有一款音樂搜索的軟件,10秒鐘的音樂,然后他就能上網(wǎng)找出這段音樂的名稱、演奏者等信息。這是多看到,是沒有“”這個(gè)結(jié)果的,結(jié)果頁面都是出現(xiàn)了這些詞的網(wǎng)頁:全文檢索(Full-TextRetrieval)是指以文本作為檢索對象,找出含有指定詞匯我們使用Lucene,主要是做站內(nèi)搜索,即對一個(gè)系統(tǒng)內(nèi)的資源進(jìn)行搜索。如BBS、所以不應(yīng)進(jìn)行對比SQL,如:SELECT*FROMtWHEREcontentlike‘%ant%’。這樣會(huì)有如下問題:ant會(huì)搜索出nting1頁的結(jié)果就是我們最想要的結(jié)果。LuceneORM,是一個(gè)概念。ORM的框架有很多種:Hibernate、TopLink、iBatis等,我們之前學(xué)習(xí)的是Hibernate。同樣的,全文檢索領(lǐng)域中也有多種框架,Lucene就是其中的一個(gè)用開源的全文檢索框架。::Lucene 實(shí)現(xiàn)建立索引功能(Indexer類Lucene的概從上可以看出,我們不僅要搜索,還要保證數(shù)據(jù)集合與索引庫的一致性。所以對于全文檢索功能的開發(fā),要做的有兩個(gè)方面:索引庫管理(索引庫中的數(shù)據(jù)、在索引庫Lucene就是操作索引庫的工具。LuceneAPI索引庫是一個(gè),里面是一些二進(jìn)制文件,就如同數(shù)據(jù)庫,所有的數(shù)據(jù)也是以文件的SQL語句一樣。庫中查詢使用IndexSearcherLucene的數(shù)據(jù)結(jié)構(gòu)為 與Field 中有多個(gè)我們只需要把在我們的程序中的對象轉(zhuǎn)成,就可以交給Lucene管理了,搜 有了這些概念,可以寫oWorld了,其他的概念可以在寫完oWorld后再進(jìn) ,查詢中僅包含一個(gè),則在詞匯表中找到該單詞,并取出他對應(yīng)的文檔就可以了。如果“播客”的文檔,則詞匯表中的“播客”詞后對應(yīng)的編號列表變成了“1,2”。因?yàn)樗饕募臋z索與,更新是先刪除后創(chuàng),我們做的操作:把數(shù)據(jù)對象轉(zhuǎn)成相應(yīng)的Field我們做的操作:調(diào)用工具IndexWriter的add(doc),把 就可能會(huì)改變,同時(shí)詞匯表中的編號也會(huì)做相應(yīng)改變,以保證正確。但我們?nèi)绻谕饷媪诉@個(gè)編號,前后兩次去取,得到的可能不是同一個(gè)文檔!所以內(nèi)部編號最好Lucene做的操作:更新詞匯表。把文本中的詞找出并放到詞匯表中,建立與文檔的對 yzer類,這是一個(gè)抽象類,切分詞的具體規(guī)則是由子類實(shí)現(xiàn)的,在把對象的屬性轉(zhuǎn)為Field時(shí),相關(guān)代碼為:doc.add(newField("title",article.getTitle()Store.YESIndex.YZED))不屬性的 可以從這個(gè)屬性中查詢(No,或是查詢時(shí)可以查其中的某些詞(YZED個(gè)內(nèi)容作為一個(gè)詞進(jìn)行查詢(NOT_YZED正的去取出數(shù)據(jù)(。如下圖:字符串也要先經(jīng)過yzer(分詞器。要求搜索時(shí)使用的yzer要與建立索引時(shí)使用的zyer要一致,否則可能搜不出正確的結(jié)果。數(shù)組。ScoreDoc是代表一個(gè)結(jié)果的相關(guān)度得分與文檔編號等信息的對象。 Lucene的API介構(gòu)造方法1:IndexWriter(Directory yzera,MaxFieldLength構(gòu)造方法2:IndexWriter(Directoryd, yzera,booleancreate,MaxFieldLengthmfl),第三個(gè)參數(shù)指定,true表示建立新的索引庫或覆蓋現(xiàn)有的索引庫(刪除后重建;false表示使用已有的索引庫,如果不存在,就報(bào)錯(cuò)。在索引庫中進(jìn)行搜索是使用類IndexSearcher。創(chuàng)建其實(shí)例的構(gòu)造方法為:QueryQueryParserStringf,yzera)2,中搜索。使用的構(gòu)造方法為:MultiFieldQueryParser(VersionmatchVersion,String[]fields,yzeryzer)數(shù)據(jù)與、Field的轉(zhuǎn)的問題。同樣,要索引庫中使用的是,也存在來回轉(zhuǎn)換的問題。如下圖: (Objectobject對象 doc) → 有所有的屬性值在前都要先轉(zhuǎn)成字符串。使用構(gòu)造方法:Field(Stringname,Stringvalue,Storestore,Indexindex)。Store與Index都是枚舉類型。Store:指定是否把當(dāng)前屬性值的原始內(nèi)容到索 (YES (NOStore//Lucene當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫系統(tǒng)。提供了兩個(gè)子類:FSDirectoryRAMDirectory。1,F(xiàn)SDirectory:在文件系統(tǒng)中,是真實(shí)的文件夾與文件。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?”,?表示中間隔一個(gè)詞publicvoidadd(Queryquery,OccurOccur3SHOULDSHOULD,表示“或”關(guān)系,最終檢索結(jié)果為所有檢索子句的并集。BooleanQuery了。publicvoidtestNumericRangeQuery(){//查publicvoidtestTermQuery(){publicvoidtestWildcardQuery(){publicvoidtestMatchAllDocsQuery(){publicvoidtestFuzzyQuery(){publicvoidtestBooleanQuery(){通過改變文檔Boost值來改變排序結(jié)果。Boost是指索引建立過程中,給整篇文檔或 象的setBoost()方法和Field對象的setBoost()方法,可以分別為 定域進(jìn)行修改。默認(rèn)情值為1F,一般不做修改。IfyouwanttobeabletosortresultsbyaFieldvalue,youmustadditasaFieldthatisindexedbutnotyzed,usingField.Index.NOT_YZED.實(shí)現(xiàn)效果的代//生成Formatterformatter=newSimpleHTMLFormatter("<spanclass='kw'>",Scorerscorer=newHighlighterhighlighter=newHighlighter(formatter,scorer);highlighter.setTextFragmenter(newSimpleFragmenter(20));//使用器:對content屬性值進(jìn) 并Stringtext yzer(),"content",//如果進(jìn)行的屬性值中沒有要搜索的關(guān)鍵字,則返回nullif(text!=null){}是yzer類,這是一個(gè)抽象類,切分詞的具體規(guī)則是由子類實(shí)現(xiàn)的,所以對于不同的語詞的。這樣做可以搜索出有意義的結(jié)果。如搜索sutdent時(shí),也可以搜索出ofword效果:“我”、“們”、“是”、“中”、“國”、“人”(Standardyzer就是這“是中”、“中國”、“國人”(CJKyzer就是這樣出來成為詞語。通常詞庫分詞被認(rèn)為是最理想的中文分詞算法。如:“我們?nèi)恕保Ч麨椋骸拔覀儭?、“”(使用極易分詞的MMyzer??梢允褂谩皹O易分詞”,或者是“分詞”分詞器、IKyzer)1,極易分詞:MM yzer,最后版本是1.5.3,更新時(shí)間是2007-12-05,不支持2,分詞:Paoding 持Lucene3.0中文分詞器使用IKyzer,主頁:實(shí)現(xiàn)了以詞典為基礎(chǔ)的正反向全切分,以及正反向最大匹配切分兩種方法。IKyzer是第實(shí)現(xiàn)的分詞器,繼承自Lucene的yzer類,針對中文文本進(jìn) @param@throwsprivatevoid yzer,Stringtext)ExceptionSystem.out.println("當(dāng)前使用的分詞器:TokenStreamtokenStream yzer.tokenStream("content",while(tokenStream.incrementToken()){TermAttributetermAttribute=}}IndexDaoIndexDao解決思路:對于上一段問題:保證索引庫中與數(shù)據(jù)庫中的數(shù)據(jù)一致(只要針對要Dao。PublishAction.execute(){PublishAction.execute(){actionForm→articlearticleDao.savearticlearticleIndexDao.savearticleIndexDao.savearticle}DeleteAction.execute(){//刪除文章articleDao.delete(id);//從數(shù)據(jù)庫中刪除articleIndex.deleteid從索引庫中刪除}actionForm→articlearticleDao.updatearticlearticleIndexDao.updatear
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)粉刷合同范例
- 個(gè)人聘用保姆合同范例
- 2025中國工商銀行流動(dòng)資金擔(dān)保借貸合同范本
- 學(xué)校外聘會(huì)計(jì)人員合同范例
- 碎玻璃回收合同范例
- 字畫代理合同范例
- 學(xué)校買花合同范例
- 委托土地經(jīng)營合同范例
- 眼科儀器購銷合同范例
- 洋酒購買合同范例
- 小班數(shù)學(xué)《認(rèn)識1到10的數(shù)字》課件
- 手工花項(xiàng)目策劃書
- 個(gè)人理財(cái)(西安歐亞學(xué)院)智慧樹知到期末考試答案2024年
- 醫(yī)院內(nèi)審制度
- 循環(huán)系統(tǒng)病癥的臨床思維
- 實(shí)現(xiàn)基于單片機(jī)的農(nóng)業(yè)監(jiān)測控制系統(tǒng)
- 總裁辦公室度工作總結(jié)
- 中醫(yī)養(yǎng)生的保護(hù)五官功能
- 2023年中考語文二輪復(fù)習(xí):標(biāo)點(diǎn)符號 真題練習(xí)題匯編(含答案解析)
- 2024年南京信息職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2024年汽配行業(yè)分析報(bào)告
評論
0/150
提交評論