免費的Lucene 原理與程式碼分析完整版下載
Lucene是一個基於Java的高效的全文檢索庫。
那麼什麼是全文檢索,為什麼需要全文檢索?
目前人們生活中出現的資料總的來說分為兩類:結構化資料和非結構化資料。很容易理解,結構化資料是有固定格式和結構的或者有限長度的資料,比如資料庫,後設資料等。非結構化資料則是不定長或者沒有固定格式的資料,如圖片,郵件,文件等。還有一種較少的分類為半結構化資料,如XML,HTML等,在一定程度上我們可以將其按照結構化資料來處理,也可以抽取純文字按照非結構化資料來處理。
非結構化資料又稱為全文資料。,對其搜尋主要有兩種方式:
- 順序掃描法(SerialScanning):顧名思義,要找內容包含某一個字串的文件,就挨著文件一個個找,對照每一個文件從頭到尾,一直掃描,指導掃描完所有的文件。類似於Windows中搜尋檔案的功能。
- 第二種則為索引。就是從非結構化資料中提取出資訊重新組織,使其變得有一定的組織,從而提高檢索效率。比如我們的電話簿,從電話簿中查詢聯絡人,我們根據首字母拼音可以索引定位到某一個聯絡人。
先建立索引在對索引進行搜尋的過程就叫做全文檢索(Full-text Search)。下圖為全文檢索的一般過程,也是Lucene檢索的過程。
我的部落格:CODE大全:www.codedq.net;業餘草:www.xttblog.com;愛分享:www.ndislwf.com或ifxvn.com。
Lucene總的來說是:
- 一個高效的,可擴充套件的,全文檢索庫。
- 全部用Java實現,無須配置。
- 僅支援純文字檔案的索引(Indexing)和搜尋(Search)。
- 不負責由其他格式的檔案抽取純文字檔案,或從網路中抓取檔案的過程。
在Lucene in action中,Lucene 的構架和過程如下圖,
說明Lucene是有索引和搜尋的兩個過程,包含索引建立,索引,搜尋三個要點。
我的部落格:CODE大全:www.codedq.net;業餘草:www.xttblog.com;愛分享:www.ndislwf.com或ifxvn.com。
讓我們更細一些看Lucene的各元件:
- 被索引的文件用Document物件表示。
- IndexWriter通過函式addDocument將文件新增到索引中,實現建立索引的過程。
- Lucene的索引是應用反向索引。
- 當使用者有請求時,Query代表使用者的查詢語句。
- IndexSearcher通過函式search搜尋Lucene Index。
- IndexSearcher計算term weight和score並且將結果返回給使用者。
- 返回給使用者的文件集合用TopDocsCollector表示。
那麼如何應用這些元件呢?
讓我們再詳細到對Lucene API 的呼叫實現索引和搜尋過程。
- 索引過程如下:
- 建立一個IndexWriter用來寫索引檔案,它有幾個引數,INDEX_DIR就是索引檔案所存放的位置,Analyzer便是用來對文件進行詞法分析和語言處理的。
- 建立一個Document代表我們要索引的文件。
- 將不同的Field加入到文件中。我們知道,一篇文件有多種資訊,如題目,作者,修改時間,內容等。不同型別的資訊用不同的Field來表示,在本例子中,一共有兩類資訊進行了索引,一個是檔案路徑,一個是檔案內容。其中FileReader的SRC_FILE就表示要索引的原始檔。
- IndexWriter呼叫函式addDocument將索引寫到索引資料夾中。
- 搜尋過程如下:
- IndexReader將磁碟上的索引資訊讀入到記憶體,INDEX_DIR就是索引檔案存放的位置。
- 建立IndexSearcher準備進行搜尋。
- 建立Analyer用來對查詢語句進行詞法分析和語言處理。
- 建立QueryParser用來對查詢語句進行語法分析。
- QueryParser呼叫parser進行語法分析,形成查詢語法樹,放到Query中。
- IndexSearcher呼叫search對查詢語法樹Query進行搜尋,得到結果TopScoreDocCollector。
以上便是Lucene API函式的簡單呼叫。
我的部落格:CODE大全:www.codedq.net;業餘草:www.xttblog.com;愛分享:www.ndislwf.com或ifxvn.com。
然而當進入Lucene的原始碼後,發現Lucene有很多包,關係錯綜複雜。
然而通過下圖,我們不難發現,Lucene的各原始碼模組,都是對普通索引和搜尋過程的一種實現。
此圖是上一節介紹的全文檢索的流程對應的Lucene實現的包結構。(參照http://www.lucene.com.cn/about.htm中文章《開放原始碼的全文檢索引擎Lucene》)
- Lucene的analysis模組主要負責詞法分析及語言處理而形成Term。
- Lucene的index模組主要負責索引的建立,裡面有IndexWriter。
- Lucene的store模組主要負責索引的讀寫。
- Lucene的QueryParser主要負責語法分析。
- Lucene的search模組主要負責對索引的搜尋。
- Lucene的similarity模組主要負責對相關性打分的實現。
瞭解了Lucene的整個結構,我們便可以開始Lucene的原始碼之旅了。
免費的Lucene 原理與程式碼分析完整版下載地址:lucene原理與程式碼分析完整版pdf下載。
相關文章
- 免費的FTP工具,免費的FTP工具下載!FTP
- UltraEdit 文字程式碼程式編輯器免費版下載安裝教程
- 免費的VNC中文軟體下載,Windows免費的VNC中文軟體下載!VNCWindows
- 基於Lucene查詢原理分析Elasticsearch的效能Elasticsearch
- ManagerForMacMAC版下載_ManagerForMac免費版下載ORMMacACM
- 從根上理解elasticsearch(lucene)查詢原理(2)-lucene常見查詢型別原理分析Elasticsearch型別
- Beginning JavaFX .pdf 免費下載Java
- 下載免費CRM軟體
- 分享免費下載論文的網站網站
- Weblogic 視訊教程免費下載Web
- Beginning Blockchain.pdf 免費下載Blockchain
- CSS Refactoring.pdf 免費下載CSS
- Involving the Audience.pdf 免費下載
- Quartz 視訊教程免費下載quartz
- Spark視訊教程免費下載Spark
- ElasticSearch 視訊教程免費下載Elasticsearch
- xshell免費版下載安裝
- Lucene查詢原理
- tp3.2.3開發個人部落格程式免費下載
- maven的下載、安裝與配置 倉庫配置完整版Maven
- Monetizing Machine Learning.pdf 免費下載Mac
- NET Core in Action.pdf 免費下載
- Deep Learning with Python.pdf 免費下載Python
- Wireless Mesh Networks.pdf 免費下載
- 工單系統提供免費下載
- 免下載就能用的主圖模板,免費分享模板使用教程!
- PEST分析法繪製軟體免費下載,怎麼畫PEST分析法
- Xshell 7官網免費版下載與安裝(詳細教程)
- Nginx的程式管理與過載原理Nginx
- Spring Boot 2 Recipes.pdf 免費下載Spring Boot
- Auto sound system 2019.pdf 免費下載
- Nanotechnology Applications in the Food Industry.epub 免費下載NaNAPP
- Practical Road Safety Auditing.pdf 免費下載
- genymotion個人免費personal版下載地址
- 《鳥哥的Linux私房菜:伺服器架設篇 第三版.pdf》PDF高清完整版-免費下載Linux伺服器
- [免費下載應用]iNeuKernel.Ocr 影像資料識別與採集原理和產品化應用
- 10 套基於Web的線上考試系統原始碼免費下載Web原始碼
- 油猴指令碼某創力文件-某人文庫免費文件下載指令碼
- 免費的visual studio智慧程式碼外掛——CodeGeeX