1. 程式人生 > >ssm學習——Lucene建立索引

ssm學習——Lucene建立索引

一:理論知識

  1.非結構化資料查詢方法

    1)順序掃描法

      太慢,效率不高。

    2)全文檢索法

      對需要查詢的文件建立索引,再對其進行搜尋。其實說白了就是為了使其結構化。

  2.索引建立和搜尋流程圖

    1)流程圖

      

    2)索引庫

      索引庫是由兩部分組成的,一部分是索引,另一部分是文件物件(不是原始文件)

  3.流程圖詳解

    1)建立文件物件

      有以下規則

        a.不同的文件可以有不同的Field

        b.同一個文件可以有相同的Field

        c.每一個文件有一個唯一的編號id

    2)分析文件

      分析的過程是經過對原始文件提取單詞,將字母轉換成小寫,去除標點符號等過程最終生成語彙單元(一個一個的單詞)。

      注意:不同的域中生成的term是不同的term。

      term好像是索引的基本單位,term包含文件域名和單詞內容。例如一個文件的檔名包含java是不同於內容中包含java的。這是通過term來實現的。

    3)建立索引

      為每一個term,指向所在的文件物件。Lucene是倒排索引,是先找到這個term再找到這個文件,這種方法比順序查詢效率高。

 

二:例項

  1.準備工作

    1)建立java工程

    2)導包

      lucene-core-4.10.3.jar

      lucene-analyzer-common-4.10.3.jar

      lucene-queryparser-4.10.3.jar

      common-io-2.4.jar

  2.實現步驟

    1)實現步驟

      1.建立一個IndexWriter物件

        指定索引庫存放位置

        指定一個分析器

      2.建立document物件

      3.建立field物件

      4.使用IndexWriter物件進行索引建立

      4.關閉IndexWriter物件

    2)程式碼

  3.Field的一些說明

    1)Field域有幾大實現類,選擇依據:

      是否分析:是否對域的內容進行分詞處理。是否要對域的內容進行查詢

      是否索引:無論是否分析,但是索引要搜尋到。有一些不分析,但是也要進行索引。

      是否儲存:將Field值儲存在文件物件中,凡是將來要從Document中獲取的Field都要儲存。

    2)Field的子類

      

    3)使用工具檢視建立的索引庫

      Luke - Lucene Index Toolbox

 

     

注意事項:Lucene不提供資訊採集的類庫,需要其它庫支援。(Nutch,jsoup,heritrix)