版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Eclipse的所有幫助文件。在BBS、BLOG、等系統(tǒng)中提供的搜索文章的功能,如這里的貼吧的例子。搜索的 PPT、、音樂(lè)、等。下圖是使用搜索的效果樂(lè)或搜索不是多搜索他們是按文件名搜索在智能上有一款音樂(lè)搜索的軟件,10秒鐘的音樂(lè),然后他就能上網(wǎng)找出這段音樂(lè)的名稱(chēng)、演奏者等信息。這是多看到,是沒(méi)有“”這個(gè)結(jié)果的,結(jié)果頁(yè)面都是出現(xiàn)了這些詞的網(wǎng)頁(yè):全文檢索(Full-TextRetrieval)是指以文本作為檢索對(duì)象,找出含有指定詞匯我們使用Lucene,主要是做站內(nèi)搜索,即對(duì)一個(gè)系統(tǒng)內(nèi)的資源進(jìn)行搜索。如BBS、所以不應(yīng)進(jìn)行對(duì)比SQL,如:SELECT*FROMtWHEREcontentlike‘%ant%’。這樣會(huì)有如下問(wèn)題:ant會(huì)搜索出nting1頁(yè)的結(jié)果就是我們最想要的結(jié)果。LuceneORM,是一個(gè)概念。ORM的框架有很多種:Hibernate、TopLink、iBatis等,我們之前學(xué)習(xí)的是Hibernate。同樣的,全文檢索領(lǐng)域中也有多種框架,Lucene就是其中的一個(gè)用開(kāi)源的全文檢索框架。::Lucene 實(shí)現(xiàn)建立索引功能(Indexer類(lèi)Lucene的概從上可以看出,我們不僅要搜索,還要保證數(shù)據(jù)集合與索引庫(kù)的一致性。所以對(duì)于全文檢索功能的開(kāi)發(fā),要做的有兩個(gè)方面:索引庫(kù)管理(索引庫(kù)中的數(shù)據(jù)、在索引庫(kù)Lucene就是操作索引庫(kù)的工具。LuceneAPI索引庫(kù)是一個(gè),里面是一些二進(jìn)制文件,就如同數(shù)據(jù)庫(kù),所有的數(shù)據(jù)也是以文件的SQL語(yǔ)句一樣。庫(kù)中查詢(xún)使用IndexSearcherLucene的數(shù)據(jù)結(jié)構(gòu)為 與Field 中有多個(gè)我們只需要把在我們的程序中的對(duì)象轉(zhuǎn)成,就可以交給Lucene管理了,搜 有了這些概念,可以寫(xiě)oWorld了,其他的概念可以在寫(xiě)完oWorld后再進(jìn) ,查詢(xún)中僅包含一個(gè),則在詞匯表中找到該單詞,并取出他對(duì)應(yīng)的文檔就可以了。如果“播客”的文檔,則詞匯表中的“播客”詞后對(duì)應(yīng)的編號(hào)列表變成了“1,2”。因?yàn)樗饕募臋z索與,更新是先刪除后創(chuàng),我們做的操作:把數(shù)據(jù)對(duì)象轉(zhuǎn)成相應(yīng)的Field我們做的操作:調(diào)用工具IndexWriter的add(doc),把 就可能會(huì)改變,同時(shí)詞匯表中的編號(hào)也會(huì)做相應(yīng)改變,以保證正確。但我們?nèi)绻谕饷媪诉@個(gè)編號(hào),前后兩次去取,得到的可能不是同一個(gè)文檔!所以?xún)?nèi)部編號(hào)最好Lucene做的操作:更新詞匯表。把文本中的詞找出并放到詞匯表中,建立與文檔的對(duì) yzer類(lèi),這是一個(gè)抽象類(lèi),切分詞的具體規(guī)則是由子類(lèi)實(shí)現(xiàn)的,在把對(duì)象的屬性轉(zhuǎn)為Field時(shí),相關(guān)代碼為:doc.add(newField("title",article.getTitle()Store.YESIndex.YZED))不屬性的 可以從這個(gè)屬性中查詢(xún)(No,或是查詢(xún)時(shí)可以查其中的某些詞(YZED個(gè)內(nèi)容作為一個(gè)詞進(jìn)行查詢(xún)(NOT_YZED正的去取出數(shù)據(jù)(。如下圖:字符串也要先經(jīng)過(guò)yzer(分詞器。要求搜索時(shí)使用的yzer要與建立索引時(shí)使用的zyer要一致,否則可能搜不出正確的結(jié)果。數(shù)組。ScoreDoc是代表一個(gè)結(jié)果的相關(guān)度得分與文檔編號(hào)等信息的對(duì)象。 Lucene的API介構(gòu)造方法1:IndexWriter(Directory yzera,MaxFieldLength構(gòu)造方法2:IndexWriter(Directoryd, yzera,booleancreate,MaxFieldLengthmfl),第三個(gè)參數(shù)指定,true表示建立新的索引庫(kù)或覆蓋現(xiàn)有的索引庫(kù)(刪除后重建;false表示使用已有的索引庫(kù),如果不存在,就報(bào)錯(cuò)。在索引庫(kù)中進(jìn)行搜索是使用類(lèi)IndexSearcher。創(chuàng)建其實(shí)例的構(gòu)造方法為:QueryQueryParserStringf,yzera)2,中搜索。使用的構(gòu)造方法為:MultiFieldQueryParser(VersionmatchVersion,String[]fields,yzeryzer)數(shù)據(jù)與、Field的轉(zhuǎn)的問(wèn)題。同樣,要索引庫(kù)中使用的是,也存在來(lái)回轉(zhuǎn)換的問(wèn)題。如下圖: (Objectobject對(duì)象 doc) → 有所有的屬性值在前都要先轉(zhuǎn)成字符串。使用構(gòu)造方法:Field(Stringname,Stringvalue,Storestore,Indexindex)。Store與Index都是枚舉類(lèi)型。Store:指定是否把當(dāng)前屬性值的原始內(nèi)容到索 (YES (NOStore//Lucene當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫(kù)系統(tǒng)。提供了兩個(gè)子類(lèi):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(){通過(guò)改變文檔Boost值來(lái)改變排序結(jié)果。Boost是指索引建立過(guò)程中,給整篇文檔或 象的setBoost()方法和Field對(duì)象的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));//使用器:對(duì)content屬性值進(jìn) 并Stringtext yzer(),"content",//如果進(jìn)行的屬性值中沒(méi)有要搜索的關(guān)鍵字,則返回nullif(text!=null){}是yzer類(lèi),這是一個(gè)抽象類(lèi),切分詞的具體規(guī)則是由子類(lèi)實(shí)現(xiàn)的,所以對(duì)于不同的語(yǔ)詞的。這樣做可以搜索出有意義的結(jié)果。如搜索sutdent時(shí),也可以搜索出ofword效果:“我”、“們”、“是”、“中”、“國(guó)”、“人”(Standardyzer就是這“是中”、“中國(guó)”、“國(guó)人”(CJKyzer就是這樣出來(lái)成為詞語(yǔ)。通常詞庫(kù)分詞被認(rèn)為是最理想的中文分詞算法。如:“我們?nèi)恕?,效果為:“我們”、“”(使用極易分詞的MMyzer。可以使用“極易分詞”,或者是“分詞”分詞器、IKyzer)1,極易分詞:MM yzer,最后版本是1.5.3,更新時(shí)間是2007-12-05,不支持2,分詞:Paoding 持Lucene3.0中文分詞器使用IKyzer,主頁(yè):實(shí)現(xiàn)了以詞典為基礎(chǔ)的正反向全切分,以及正反向最大匹配切分兩種方法。IKyzer是第實(shí)現(xiàn)的分詞器,繼承自Lucene的yzer類(lèi),針對(duì)中文文本進(jìn) @param@throwsprivatevoid yzer,Stringtext)ExceptionSystem.out.println("當(dāng)前使用的分詞器:TokenStreamtokenStream yzer.tokenStream("content",while(tokenStream.incrementToken()){TermAttributetermAttribute=}}IndexDaoIndexDao解決思路:對(duì)于上一段問(wèn)題:保證索引庫(kù)中與數(shù)據(jù)庫(kù)中的數(shù)據(jù)一致(只要針對(duì)要Dao。PublishAction.execute(){PublishAction.execute(){actionForm→articlearticleDao.savearticlearticleIndexDao.savearticleIndexDao.savearticle}DeleteAction.execute(){//刪除文章articleDao.delete(id);//從數(shù)據(jù)庫(kù)中刪除articleIndex.deleteid從索引庫(kù)中刪除}actionForm→articlearticleDao.updatearticlearticleIndexDao.updatear
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 門(mén)診護(hù)理年終總結(jié)
- 老年髖部骨折術(shù)后護(hù)理
- 2024【設(shè)備買(mǎi)賣(mài)合同】設(shè)備買(mǎi)賣(mài)協(xié)議合同樣本
- 四年級(jí)數(shù)學(xué)期末教學(xué)工作總結(jié)
- 校園突發(fā)公共衛(wèi)生事件應(yīng)急預(yù)案
- 幼兒園疫情期間開(kāi)展幼兒讀書(shū)閱讀活動(dòng)方案
- 建設(shè)工程項(xiàng)目審計(jì)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年化學(xué)中考備考方案
- 2023年常州市公辦技工院校專(zhuān)項(xiàng)招聘教師考試真題
- 2024工程造價(jià)咨詢(xún)服務(wù)合同書(shū)工程
- GB∕T 12691-2021 空氣壓縮機(jī)油
- 標(biāo)準(zhǔn)日本語(yǔ)初級(jí)單詞(上冊(cè))
- 初中美術(shù)6.靜物之美-課件-(2)ppt課件
- 完整版軟件工程網(wǎng)上購(gòu)物系統(tǒng)
- 地理說(shuō)題范例(課堂PPT)
- 表土剝離施工方案
- (高清正版)GB∕T2059-2017銅及銅合金帶材
- 煙塵煙氣連續(xù)自動(dòng)監(jiān)測(cè)系統(tǒng)復(fù)習(xí)總
- 論隧道施工對(duì)周?chē)鷺痘挠绊懪c控制
- 如何打造狼性團(tuán)隊(duì)
- 行為矯正治療記錄單
評(píng)論
0/150
提交評(píng)論