Lucene.Net 簡介

Lucene概況

      Lucene的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎建立起完整的全文檢索引擎。

      Lucene 能夠爲文本類型的數據建立索引,所以你只要能把你要索引的數據格式轉化的文本的,Lucene 就能對你的文檔進行索引和搜索。比如你要對一些 HTML 文檔,PDF 文檔進行索引的話你就首先需要把 HTML 文檔和 PDF 文檔轉化成文本格式的,然後將轉化後的內容交給 Lucene 進行索引,然後把創建好的索引文件保存到磁盤或者內存中,最後根據用戶輸入的查詢條件在索引文件上進行查詢。

索引和搜索

     索引是現代搜索引擎的核心,建立索引的過程就是把源數據處理成非常方便查詢的索引文件的過程。

     爲什麼索引這麼重要呢?試想你現在要在大量的文檔中搜索含有某個關鍵詞的文檔,那麼如果不建立索引的話你就需要把這些文檔順序的讀入內存,然後檢查這個文章中是不是含有要查找的關鍵詞,這樣的話就會耗費非常多的時間,想想搜索引擎可是在毫秒級的時間內查找出要搜索的結果的。這就是由於建立了索引的原因,你可以把索引想象成這樣一種數據結構,他能夠使你快速的隨機訪問存儲在索引中的關鍵詞,進而找到該關鍵詞所關聯的文檔。

     Lucene 採用的是一種稱爲反向索引(inverted index)的機制。反向索引就是說我們維護了一個詞/短語表,對於這個表中的每個詞/短語,都有一個鏈表描述了有哪些文檔包含了這個詞/短語。這樣在用戶輸入查詢條件的時候,就能非常快的得到搜索結果。

     由於 Lucene 提供了簡單易用的 API,所以即使讀者剛開始對全文本進行索引的機制並不太瞭解,也可以非常容易的使用 Lucene 對你的文檔實現索引。

     對文檔建立好索引後,就可以在這些索引上面進行搜索了。搜索引擎首先會對搜索的關鍵詞進行解析,然後再在建立好的索引上面進行查找,最終返回和用戶輸入的關鍵詞相關聯的文檔。

Lucene.Net 命名空間分析

命名空間: Lucene.Net.Documents 這個命名空間提供了一些爲封裝要索引的文檔所需要的類,比如 Document, Field。這樣,每一個文檔最終被封裝成了一個 Document 對象。

命名空間: Lucene.Net.Analysis 這個命名空間主要功能是對文檔進行分詞,因爲文檔在建立索引之前必須要進行分詞,所以這個包的作用可以看成是爲建立索引做準備工作。

命名空間: Lucene.Net.Index 這個命名空間提供了一些類來協助創建索引以及對創建好的索引進行更新。這裏面有兩個基礎的類:IndexWriter 和 IndexReader,其中 IndexWriter 是用來創建索引並添加文檔到索引中的,IndexReader 是用來刪除索引中的文檔的。

命名空間: Lucene.Net.Search 這個命名空間提供了對在建立好的索引上進行搜索所需要的類。比如 IndexSearcher 和 Hits, IndexSearcher 定義了在指定的索引上進行搜索的方法,Hits 用來保存搜索得到的結果。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xuezhongsong/archive/2009/07/28/4388171.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章