您好,登錄后才能下訂單哦!
這篇文章主要講解了“Lucene全文檢索的原理是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Lucene全文檢索的原理是什么”吧!
在我們處理的數(shù)據(jù)當中,分為三類數(shù)據(jù):
結(jié)構(gòu)化數(shù)據(jù):具有固定格式或限定長度的數(shù)據(jù),如我們的數(shù)據(jù)庫中的數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù):無固定格式、無固定長度的數(shù)據(jù),如我們web上的文本內(nèi)容等
半結(jié)構(gòu)數(shù)據(jù):如Json、XML數(shù)據(jù)。
那么我們怎么來處理這些不同類型的數(shù)據(jù)呢?
對于數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù),使用SQL語句查詢
對于非結(jié)構(gòu)數(shù)據(jù),我們順序掃描、全文檢索.
其中,順序掃描就是從數(shù)據(jù)的開頭的一條數(shù)據(jù)掃描到最后的一條數(shù)據(jù)。顯而易見的是,這對于時間、性能都是很大的浪費。
那什么是全文檢索呢?
這就是Lucene要完成的事情了。下面我們先看一張圖來描述它在整個系統(tǒng)中所起到的作用:
對lucen上層的應(yīng)用部分,我們可以看到應(yīng)用手機了結(jié)構(gòu)化的、半結(jié)構(gòu)化的、非結(jié)構(gòu)化的數(shù)據(jù),由lucene為其建立索引文件;另一種應(yīng)用則是檢索,用戶通過輸入檢索條件的關(guān)鍵詞檢索我們的索引庫,然后把結(jié)果返回給用戶。
那么什么是索引?
就像新華字典中的拼音檢索和部首索引用來查字一樣。
在lucene中也是一樣,全文檢索指的是某一個詞在哪些文檔中出現(xiàn)過。例如:
在上圖中,“l(fā)ucene”這個關(guān)鍵詞在第1篇和第3篇文檔中出現(xiàn)過?!癝olr”這個關(guān)鍵詞在第1、3、5篇文檔中出現(xiàn)過。“hadoop”這個關(guān)鍵詞在第3、5、7、8、9篇文檔中出現(xiàn)過。
這里我們把整個過程稱之為“反向索引”。右邊的每個關(guān)鍵詞的文檔鏈表我們稱之為倒排表。
什么是反向索引?
反向索引:這種由字符串到文件的映射是文件到字符串映射的反向過程。其實描述的就是一種映射關(guān)系。
創(chuàng)建索引
好吧。那么創(chuàng)建全文檢索的步驟是怎么樣的呢?
這里我們將創(chuàng)建全文檢索分為三個步驟或者說需要的三個東西:
需要檢索的數(shù)據(jù)(Document)
分詞技術(shù)(Analyzer)
索引創(chuàng)建(Indexer)
我們舉個例子吧。
第一步,Document數(shù)據(jù)實例
我的博客空間
HappyBKs的Lucene文章
HappBKs的Hadoop文章
第二步,分詞技術(shù)。(我們這里采用標準分詞。)
我|的|博|客|空|間
happybks|的|lucene|文|章
happbks|的|hadoop|文|章
注意,這里經(jīng)過標準分詞之后,中文按字進行了切分,英文的大寫字符被轉(zhuǎn)換為了小寫。
第三步,索引創(chuàng)建。
Term | ID | Term | ID | Term | ID |
我 | 1 | happybks | 2 | happbks | 3 |
的 | 1 | 的 | 2 | 的 | 3 |
博 | 1 | lucene | 2 | hadoop | 3 |
客 | 1 | 文 | 2 | 文 | 3 |
空 | 1 | 章 | 2 | 章 | 3 |
間 | 1 | ||||
我們對索引進行合并。
Term | ID | Term | ID | Term | ID |
我 | 1 | happybks | 2,3 | ||
的 | 1,2,3 | ||||
博 | 1 | lucene | 2 | hadoop | 3 |
客 | 1 | 文 | 2,3 | ||
空 | 1 | 章 | 2,3 | ||
間 | 1 | ||||
這張表就是我們所說的索引。
現(xiàn)在,我們來看看,如何利用索引來進行檢索。
索引檢索
分為四個步驟:
搜索關(guān)鍵詞(keywords)
分詞技術(shù)(Analyzer)
檢索索引(Search)
返回結(jié)果
我們還是放到例子里來梳理步驟。
第一步,獲得用戶搜索的關(guān)鍵詞
lucene文章
第二步,采用分詞技術(shù)
lucene|文|章
第三步,檢索索引。
通過上面的圖我們可以看到,倒排表中,包含關(guān)鍵詞所有分詞單元的文檔是文檔2.
感謝各位的閱讀,以上就是“Lucene全文檢索的原理是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Lucene全文檢索的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。