• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發java → Lucene學習總結之二:Lucene的總體架構

    Lucene學習總結之二:Lucene的總體架構

    相關軟件相關文章發表評論 來源:forfuture1978時間:2010/2/22 23:32:16字體大?。?em class="fontsize">A-A+

    作者:覺先點擊:296次評論:11次標簽: Lucene

    lucene 索引查看工具V4.0 最新版(Luke)
    • 類型:文件處理大?。?i>9.8M語言:英文 評分:3.7
    • 標簽:
    立即下載

    Lucene總的來說是:

    • 一個高效的,可擴展的,全文檢索庫。
    • 全部用Java實現,無須配置。
    • 僅支持純文本文件的索引(Indexing)和搜索(Search)。
    • 不負責由其他格式的文件抽取純文本文件,或從網絡中抓取文件的過程。

    在Lucene in action中,Lucene 的構架和過程如下圖,

    image

    說明Lucene是有索引和搜索的兩個過程,包含索引創建,索引,搜索三個要點。

    讓我們更細一些看Lucene的各組件:

    lucene  zong ti jia gou

    • 被索引的文檔用Document對象表示。
    • IndexWriter通過函數addDocument將文檔添加到索引中,實現創建索引的過程。
    • Lucene的索引是應用反向索引。
    • 當用戶有請求時,Query代表用戶的查詢語句。
    • IndexSearcher通過函數search搜索Lucene Index。
    • IndexSearcher計算term weight和score并且將結果返回給用戶。
    • 返回給用戶的文檔集合用TopDocsCollector表示。

     

    那么如何應用這些組件呢?

    讓我們再詳細到對Lucene API 的調用實現索引和搜索過程。

    using lucene

    • 索引過程如下:
      • 創建一個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函數的簡單調用。

    然而當進入Lucene的源代碼后,發現Lucene有很多包,關系錯綜復雜。

    然而通過下圖,我們不難發現,Lucene的各源碼模塊,都是對普通索引和搜索過程的一種實現。

    此圖是上一節介紹的全文檢索的流程對應的Lucene實現的包結構。(參照http://www.lucene.com.cn/about.htm中文章《開放源代碼的全文檢索引擎Lucene》)

    clip_image008

    • Lucene的analysis模塊主要負責詞法分析及語言處理而形成Term。
    • Lucene的index模塊主要負責索引的創建,里面有IndexWriter。
    • Lucene的store模塊主要負責索引的讀寫。
    • Lucene的QueryParser主要負責語法分析。
    • Lucene的search模塊主要負責對索引的搜索。
    • Lucene的similarity模塊主要負責對相關性打分的實現。

    了解了Lucene的整個結構,我們便可以開始Lucene的源碼之旅了。

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(11)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>