天天看點

10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

01.全文檢索基本介紹  
10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程
10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

課程計劃

  1. 什麼是全文檢索,如何實作全文檢索
  2. Lucene實作全文檢索的流程
    1. 建立索引
    2. 查詢索引

1. 什麼是全文檢索

資料分類:結構化資料和非結構化資料

結構化資料搜尋:常見的結構化資料也就是資料庫中的資料。在資料庫中搜尋很容易實作,通常都是使用sql語句進行查詢,而且能很快的得到查詢結果。

為什麼資料庫搜尋很容易?因為資料庫中的資料存儲是有規律的,有行有列而且資料格式、資料長度都是固定的。

 非結構化資料查詢方法

這種先建立索引,再對索引進行搜尋的過程就叫全文檢索(Full-text Search)

雖然建立索引的過程也是非常耗時的,但是索引一旦建立就可以多次使用,全文檢索主要處理的是查詢,是以耗時間建立索引是值得的。

如何實作全文檢索

JAVA開發可以使用Lucene實作全文檢索。Lucene是apache下的一個開放源代碼的全文檢索引擎工具包。提供了完整的查詢引擎和索引引擎,以友善的在目标系統中實作全文檢索的功能。

全文檢索的應用場景

對于資料量大、資料結構不固定的資料可采用全文檢索方式搜尋,比如:論壇站内搜尋、電商網站站内搜尋等。

2. Lucene實作全文檢索的流程

 索引和搜尋流程圖

10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

2.1 建立索引

對文檔索引的過程,将使用者要搜尋的文檔内容進行索引,索引存儲在索引庫(index)中。

2.1.1  獲得原始文檔

原始文檔是指要索引和搜尋的内容。

從網際網路上、資料庫、檔案系統中等擷取需要搜尋的原始資訊,這個過程就是資訊采集,資訊采集的目的是為了對原始内容進行索引。在Internet上采集資訊的軟體通常稱為爬蟲,爬蟲通路網際網路上的每一個網頁,将擷取到的網頁内容存儲起來。

2.1.2  建立文檔對象

在索引前需要将原始内容建立成文檔(Document),文檔中包括一個一個的域(Field),域中存儲特定的内容。

注意:每個Document可以有多個Field,不同的Document可以有不同的Field,同一個Document可以有相同的Field(域名和域值都相同)。

每個文檔都有一個唯一的編号,就是文檔id。

2.1.3  分析文檔

将原始内容建立為包含域(Field)的文檔(document),需要再對域中的内容進行分析,分析的過程是經過對原始文檔提取單詞、将字母轉為小寫、去除标點符号、去除停用詞等過程生成最終的語彙單元,可将語彙單元了解為一個一個的詞。

每個單詞叫做一個Term,不同的域中拆分出來的相同的單詞是不同的Term。term中包含兩部分一部分是文檔的域名,另一部分是單詞的内容。 

2.1.4  建立索引

對所有文檔分析得出的語彙單元進行索引,索引的目的是為了搜尋,最終要實作隻搜尋被索引的語彙單元進而找到Document(文檔)。
10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

注意:建立索引是對語彙單元索引,通過詞語找文檔,這種索引的結構叫反向索引結構。

傳統方法是根據檔案找到該檔案的内容,在檔案内容中比對搜尋關鍵字,這種方法是順序掃描方法,資料量大、搜尋慢。

反向索引結構是根據内容(詞語)找文檔,如下圖:

10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

反向索引結構也叫反向索引結構,包括索引和文檔兩部分,索引即詞彙表,它的規模較小,而文檔集合較大。

2.2 查詢索引

查詢索引就是使用者輸入關鍵字搜尋的過程。根據關鍵字搜尋索引,根據索引找到對應的文檔,進而找到要搜尋的内容。

2.2.1 使用者查詢接口

全文檢索系統提供使用者搜尋的界面供使用者送出搜尋的關鍵字,搜尋完成展示搜尋結果。

Lucene不提供制作使用者搜尋界面的功能,需要根據自己的需求開發搜尋界面。

2.2.2 建立查詢

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

2.2.3 執行查詢

根據查詢文法在反向索引詞典表中分别找出對應搜尋詞的索引,進而找到索引所連結的文檔連結清單。

2.2.4 渲染結果

以一個友好的界面将查詢結果展示給使用者,使用者根據搜尋結果找自己想要的資訊,為了幫助使用者很快找到自己的結果,提供了很多展示的效果,比如搜尋結果中将關鍵字高亮顯示等。

10 Lucene:01.全文檢索基本介紹1. 什麼是全文檢索2. Lucene實作全文檢索的流程

10 Lucene:02.lucene入門案例

=========================

end

繼續閱讀