免費的Lucene 原理與程式碼分析完整版下載

來源:互聯網
上載者:User

標籤:檔案內容   sim   .com   長度   結構化   clip   字串   不難   collect   

Lucene是一個基於Java的高效的全文檢索索引庫。
那麼什麼是全文檢索索引,為什麼需要全文檢索索引?
目前人們生活中出現的資料總的來說分為兩類:結構化資料和非結構化資料。很容易理解,結構化資料是有固定格式和結構的或者有限長度的資料,比如資料庫,中繼資料等。非結構化資料則是不定長或者沒有固定格式的資料,片,郵件,文檔等。還有一種較少的分類為半結構化資料,如XML,HTML等,在一定程度上我們可以將其按照結構化資料來處理,也可以抽取純文字按照非結構化資料來處理。
非結構化資料又稱為全文資料。,對其搜尋主要有兩種方式:

  1. 順序掃描法(SerialScanning):顧名思義,要找內容包含某一個字串的文檔,就挨著文檔一個個找,對照每一個文檔從頭到尾,一直掃描,指導掃描完所有的文檔。類似於Windows中搜尋檔案的功能。
  2.  第二種則為索引。就是從非結構化資料中提取出資訊重新組織,使其變得有一定的組織,從而提高檢索效率。比如我們的電話簿,從電話簿中尋找連絡人,我們根據首字母拼音可以索引定位到某一個連絡人。

先建立索引在對索引進行搜尋的過程就叫做全文檢索索引(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下載。

免費的Lucene 原理與程式碼分析完整版下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.