溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Lucence

發(fā)布時(shí)間:2020-06-25 20:15:36 來源:網(wǎng)絡(luò) 閱讀:322 作者:shptc 欄目:網(wǎng)絡(luò)安全

Lucene是apache軟件基金會(huì)4 jakarta項(xiàng)目組的一個(gè)子項(xiàng)目,是一個(gè)開放源代碼的全文檢索引擎工具包,但它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎。Lucene的目的是為軟件開發(fā)人員提供一個(gè)簡單易用的工具包.

粘貼這句話的意思就是想說明  Lucene僅僅是一個(gè)工具包,搜索引擎的工具包.

有人會(huì)問?Lucene和solr的區(qū)別,solr是一個(gè)搜索系統(tǒng),打個(gè)比方,就如servlet和struts2的區(qū)別   Lucene就是servlet,solr就好比solr,solr封裝了Lucene.

下面說說Lucene的原理:

我們使用Lucene,其實(shí)使用的是他的倒排查詢

什么是倒排查詢?舉個(gè)例子

新華字典,我們都用過吧,新華字典分為兩部分,第一部門就是目錄的邊旁部首,第二部分就是正文,一個(gè)一個(gè)字的解釋,

我們在用新華字典的時(shí)候,一般我們都是通過邊旁部首找字,沒有人一頁一頁的翻字典找字吧.

Lucene的倒排就是如此,他會(huì)檢索文本,數(shù)據(jù)庫,web網(wǎng)頁,在把內(nèi)容分詞,就像邊旁部首

Lucence

再次強(qiáng)調(diào)

搜索引擎(百度,谷歌)和lucene的區(qū)別

搜索引擎就是一個(gè)應(yīng)用,lucene就是一個(gè)搜索工具類

 Lucence

name:lucene表示要搜索name這個(gè)Field域中,內(nèi)容為“l(fā)ucene”的文檔。

desc:lucene AND desc:java 表示要搜索即包括關(guān)鍵字“l(fā)ucene”也包括“java”的文檔。

 

看不懂沒關(guān)系

我接下來說明Doucment和Field關(guān)系

Lucence

這里我用數(shù)據(jù)庫中的一條數(shù)據(jù)說明

Lucence

這一條數(shù)據(jù)就是一個(gè)document文檔

 每一個(gè)字段就是一個(gè)Field域

這樣說是不是豁然開朗了.

 

 

接下來,我們說說分詞器

這個(gè)lucene是外國人搞得,對中文的支持不說你也知道,不多外國人也想到這一點(diǎn),"我是中國人">>我  是  中  國  人   >> 這樣的效果其實(shí)還不是我們想要的,我們要的是"中國","國人"這樣的詞匯,這里我也不打啞謎了,市場上有很多中文分詞器,無敵的存在我覺得就是IK了,這是一個(gè)jar包,導(dǎo)入項(xiàng)目即可,說他無敵是因?yàn)樗梢宰约杭釉~,比如"屌絲","高富帥",這也詞,可以自己加到分詞器中,讓程序認(rèn)得.

LucenceLucence

這就是要用到的包;

Lucenceik下載后把這3個(gè)文件也要導(dǎo)入項(xiàng)目中,ext.dic是加詞的,stop是停詞的.

 

前面的都是Lucece的理論,只有理論搞懂了,下面的代碼實(shí)現(xiàn)過程也就輕松了

Lucence

                                     //分詞        testCreateIndex()               BookDao bookDao =          List<Book> listBook =                       List<Document> documents =  ArrayList<>                                   Document doc =              doc.add( TextField("id", String.valueOf(bk.getId()), Store.YES));             doc.add( TextField("name"             doc.add( TextField("price"             doc.add( TextField("pic"             doc.add( TextField("desc"                                                                     Analyzer analyzer =                        IndexWriterConfig config =                        Directory directory = FSDirectory.open( File("H:\\temp"                       IndexWriter writer =                                           

         //查        serachIndex()                   Analyzer analyzer =                   QueryParser queryParser =  QueryParser("desc"                           Query query = queryParser.parse("desc:java AND lucene"                               Directory directory = FSDirectory.open( File("H:\\temp"                           IndexReader indexReader =                           IndexSearcher indexSearcher =                                     TopDocs topDocs  = indexSearcher.search(query, 10         System.out.println("查詢到的數(shù)據(jù)總條數(shù)是:" +                  ScoreDoc[] docs =                                                      docID =             Document doc =                          System.out.println("docID:"+             System.out.println("bookid:"+doc.get("id"             System.out.println("pic:"+doc.get("pic"             System.out.println("name:"+doc.get("name"             System.out.println("desc:"+doc.get("desc"             System.out.println("price:"+doc.get("price"                      }

Lucence


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI