版權(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)找出這段音樂的名稱、演奏者等信息。這是多看到,是沒有“”這個結(jié)果的,結(jié)果頁面都是出現(xiàn)了這些詞的網(wǎng)頁:全文檢索(Full-TextRetrieval)是指以文本作為檢索對象,找出含有指定詞匯我們使用Lucene,主要是做站內(nèi)搜索,即對一個系統(tǒng)內(nèi)的資源進(jìn)行搜索。如BBS、所以不應(yīng)進(jìn)行對比SQL,如:SELECT*FROMtWHEREcontentlike‘%ant%’。這樣會有如下問題:ant會搜索出nting1頁的結(jié)果就是我們最想要的結(jié)果。LuceneORM,是一個概念。ORM的框架有很多種:Hibernate、TopLink、iBatis等,我們之前學(xué)習(xí)的是Hibernate。同樣的,全文檢索領(lǐng)域中也有多種框架,Lucene就是其中的一個用開源的全文檢索框架。::Lucene 實(shí)現(xiàn)建立索引功能(Indexer類Lucene的概從上可以看出,我們不僅要搜索,還要保證數(shù)據(jù)集合與索引庫的一致性。所以對于全文檢索功能的開發(fā),要做的有兩個方面:索引庫管理(索引庫中的數(shù)據(jù)、在索引庫Lucene就是操作索引庫的工具。LuceneAPI索引庫是一個,里面是一些二進(jìn)制文件,就如同數(shù)據(jù)庫,所有的數(shù)據(jù)也是以文件的SQL語句一樣。庫中查詢使用IndexSearcherLucene的數(shù)據(jù)結(jié)構(gòu)為 與Field 中有多個我們只需要把在我們的程序中的對象轉(zhuǎn)成,就可以交給Lucene管理了,搜 有了這些概念,可以寫oWorld了,其他的概念可以在寫完oWorld后再進(jìn) ,查詢中僅包含一個,則在詞匯表中找到該單詞,并取出他對應(yīng)的文檔就可以了。如果“播客”的文檔,則詞匯表中的“播客”詞后對應(yīng)的編號列表變成了“1,2”。因?yàn)樗饕募臋z索與,更新是先刪除后創(chuàng),我們做的操作:把數(shù)據(jù)對象轉(zhuǎn)成相應(yīng)的Field我們做的操作:調(diào)用工具IndexWriter的add(doc),把 就可能會改變,同時詞匯表中的編號也會做相應(yīng)改變,以保證正確。但我們?nèi)绻谕饷媪诉@個編號,前后兩次去取,得到的可能不是同一個文檔!所以內(nèi)部編號最好Lucene做的操作:更新詞匯表。把文本中的詞找出并放到詞匯表中,建立與文檔的對 yzer類,這是一個抽象類,切分詞的具體規(guī)則是由子類實(shí)現(xiàn)的,在把對象的屬性轉(zhuǎn)為Field時,相關(guān)代碼為:doc.add(newField("title",article.getTitle()Store.YESIndex.YZED))不屬性的 可以從這個屬性中查詢(No,或是查詢時可以查其中的某些詞(YZED個內(nèi)容作為一個詞進(jìn)行查詢(NOT_YZED正的去取出數(shù)據(jù)(。如下圖:字符串也要先經(jīng)過yzer(分詞器。要求搜索時使用的yzer要與建立索引時使用的zyer要一致,否則可能搜不出正確的結(jié)果。數(shù)組。ScoreDoc是代表一個結(jié)果的相關(guān)度得分與文檔編號等信息的對象。 Lucene的API介構(gòu)造方法1:IndexWriter(Directory yzera,MaxFieldLength構(gòu)造方法2:IndexWriter(Directoryd, yzera,booleancreate,MaxFieldLengthmfl),第三個參數(shù)指定,true表示建立新的索引庫或覆蓋現(xiàn)有的索引庫(刪除后重建;false表示使用已有的索引庫,如果不存在,就報(bào)錯。在索引庫中進(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)成一個支持全文索引的數(shù)據(jù)庫系統(tǒng)。提供了兩個子類: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?”,?表示中間隔一個詞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類,這是一個抽象類,切分詞的具體規(guī)則是由子類實(shí)現(xiàn)的,所以對于不同的語詞的。這樣做可以搜索出有意義的結(jié)果。如搜索sutdent時,也可以搜索出ofword效果:“我”、“們”、“是”、“中”、“國”、“人”(Standardyzer就是這“是中”、“中國”、“國人”(CJKyzer就是這樣出來成為詞語。通常詞庫分詞被認(rèn)為是最理想的中文分詞算法。如:“我們?nèi)恕保Ч麨椋骸拔覀儭?、“”(使用極易分詞的MMyzer??梢允褂谩皹O易分詞”,或者是“分詞”分詞器、IKyzer)1,極易分詞:MM yzer,最后版本是1.5.3,更新時間是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)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度代持股轉(zhuǎn)讓及競業(yè)禁止合同范本4篇
- 2024鋁合金門窗行業(yè)市場拓展與品牌合作合同3篇
- 2025年出租居所中介服務(wù)合作委托合同
- 2025年度消費(fèi)金融借貸合同模板(含信用抵押)
- 二零二五年度船舶打蠟防腐蝕合同4篇
- 二零二五版美術(shù)館東館館舍租賃藝術(shù)藏品保管合同4篇
- 2025年度商業(yè)綜合體場物業(yè)管理與廣告資源整合合同4篇
- 2025年度承臺施工工期延誤賠償合同二零二五版4篇
- 2025年度綠色建筑承臺基礎(chǔ)施工一體化合同4篇
- 2025年度智能交通無人駕駛技術(shù)研發(fā)與應(yīng)用合同3篇
- 新教材人教版高中物理選擇性必修第二冊全冊各章節(jié)課時練習(xí)題及章末測驗(yàn)含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 初級養(yǎng)老護(hù)理員培訓(xùn)全套
- 集中供熱管網(wǎng)系統(tǒng)一次網(wǎng)的調(diào)節(jié)方法
- GB/T 41095-2021機(jī)械振動選擇適當(dāng)?shù)臋C(jī)器振動標(biāo)準(zhǔn)的方法
- MRP、MPS計(jì)劃文檔教材
- 甲狀腺疾病護(hù)理查房課件
- 安全安全帶檢查記錄表
- GB∕T 26520-2021 工業(yè)氯化鈣-行業(yè)標(biāo)準(zhǔn)
- 2022年浙江省紹興市中考數(shù)學(xué)試題及參考答案
- Listen-to-this-3-英語高級聽力-(整理版)
- 生活垃圾焚燒處理建設(shè)項(xiàng)目評價導(dǎo)則(2022)
評論
0/150
提交評論