lucene學習之基本概念

        最近工作中要用到搜索引擎相關內容,自己接觸這塊已經是三年前的事情了,現在抽空講之前知識總結一下。

一、什麼是Lucene

        Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。

        通俗的講,它就是一個可以創建全文檢索引擎系統的一堆jar包.可以使用它來構建全文檢索引擎系統,但是它不能獨立運行。

        全文檢索系統有solr、es 等。

二、有什麼作用

  •    互聯網全文檢索引擎(比如百度,  谷歌,  必應)
  •    站內全文檢索引擎(淘寶, 京東搜索功能)
  •    優化數據庫查詢(因爲數據庫中使用like關鍵字是全表掃描也就是順序掃描算法,查詢慢)

三、Lucene實現全文檢索的流程

   

(1) 創建索引

        對文檔索引的過程,將用戶要搜索的文檔內容進行索引,索引存儲在索引庫(index)中。

  • 獲得原始文檔

        原始文檔是指要索引和搜索的內容。原始內容包括互聯網上的網頁、數據庫中的數據、磁盤上的文件等。我們可以通過網絡爬蟲、IO流、數據庫讀取等手段採集原始信息獲取原始文檔。

  • 創建文檔對象

      獲取原始內容的目的是爲了索引,在索引前需要將原始內容創建成文檔(Document),文檔中包括一個一個的域(Field),域中存儲內容。文件系統中一個文檔表示一個Document,數據庫的一條記錄代表一個Document,數據庫裏面一個字段代表一個Field.

  • 分析文檔

     將原始內容創建爲包含域(Field)的文檔(document),需要再對域中的內容進行分析,分析的過程是經過對原始文檔提取單詞、將字母轉爲小寫、去除標點符號、去除停用詞等過程生成最終的語彙單元,可以將語彙單元理解爲一個一個的單詞。

  • 創建索引

     對所有文檔分析得出的語彙單元進行索引,索引的目的是爲了搜索,最終要實現只搜索被索引的語彙單元從而找到Document(文檔)。

注意:創建索引是對語彙單元索引,通過詞語找文檔,這種索引的結構叫倒排索引結構

(2)、查詢索引過程

        查詢索引也是搜索的過程。搜索就是用戶輸入關鍵字,從索引(index)中進行搜索的過程。根據關鍵字搜索索引,根據索引找到對應的文檔,從而找到要搜索的內容。

  • 用戶查詢接口

    全文檢索系統提供用戶搜索的界面供用戶提交搜索的關鍵字,搜索完成展示搜索結果。

    Lucene不提供製作用戶搜索界面的功能,需要根據自己的需求開發搜索界面。

  • 創建查詢對象

       用戶輸入查詢關鍵字執行搜索之前需要先構建一個查詢對象,查詢對象中可以指定查詢要搜索的Field文檔域、查詢關鍵字等,查詢對象會生成具體的查詢語法。

  • 執行查詢

        根據查詢語法在倒排索引詞典表中分別找出對應搜索詞的索引,從而找到索引所鏈接的文檔鏈表。類似於執行sql查詢語句。

  • 渲染查詢結果

        以一個友好的界面將查詢結果展示給用戶,用戶根據搜索結果找自己想要的信息,爲了幫助用戶很快找到自己的結果,提供了很多展示的效果,比如搜索結果中將關鍵字高亮顯示,百度提供的快照等。

 

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