系統學習Lucene全文檢索技術(一)

2021-10-06 19:09:22 字數 3193 閱讀 4137

為了解決資料庫壓力和速度的問題,我們的資料庫就變成了索引庫,我們使用lucene的api的來操作服

務器上的索引庫。這樣完全和資料庫進行了隔離。

1、順序掃瞄法

演算法描述:

所謂順序掃瞄,例如要找內容包含乙個字串的檔案,就是乙個文件乙個文件的看,對於每乙個文件,

從頭看到尾,如果此文件包含此字串,則此文件為我們要找的檔案,接著看下乙個檔案,直到掃瞄完

所有的檔案。

優點:查詢準確率高

缺點:查詢速度會隨著查詢資料量的增大, 越來越慢

使用場景:

資料庫中的like關鍵字模糊查詢、文字編輯器的ctrl + f 查詢功能

2、倒排索引 也叫全文檢索演算法

lucene會對文件建立倒排索引

1、 提取資源中關鍵資訊, 建立索引 (目錄)

2、 搜尋時,根據關鍵字(目錄),找到資源的位置

演算法描述:

查詢前會先將查詢的原始文字資訊提取組成文件(正文), 對文件進行切分詞組成索引(目錄), 索引和文件有關聯關係, 查詢的時候先查詢索引, 通過索引找文件的這個過程叫做全文檢索

為什麼倒排索引比順序掃瞄快?

理解 : 因為索引可以去掉重複的詞, 漢語常用的字和詞大概等於 字典加詞典, 常用的英文在牛津詞典也有收錄.如果用計算機的速度查詢, 字典+詞典+牛津詞典 這些內容是非常快的. 但是用這些字典、詞典組成的文章卻是千千萬萬不計其數;索引的大小最多也就是字典+詞典. 所以通過查詢索引, 再通過索引和文件的關聯關係找到文件速度比較快.。

順序掃瞄法則是直接去逐個查詢那些不計其數的文章,計算的速度也會很慢。

1、什麼是全文檢索

計算機索引程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞在文章**現的次數和位置。當使用者查詢時,檢索程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者的檢索方式

2、什麼是lucene

目前已經有很多應用程式的搜尋功能是基於 lucene 的,比如 eclipse 的幫助系統的搜尋功能。lucene能夠為文字型別的資料建立索引,所以你只要能把你要索引的資料格式轉化的文字的,lucene 就能對你的文件進行索引和搜尋。比如你要對一些 html 文件、pdf 文件進行索引的話,你就首先需要把html 文件和 pdf 文件轉化成文字格式的,然後將轉化後的內容交給 lucene 進行索引,然後把建立好的索引檔案儲存到磁碟或者記憶體中,最後根據使用者輸入的查詢條件在索引檔案上進行查詢。不指定要索引的文件的格式也使 lucene 能夠幾乎適用於所有的搜尋應用程式。

1、索引和搜尋流程圖

(1)索引流程

索引庫:lucene的索引庫(index);

若想從索引庫中搜尋資料,先要進行索引,怎麼進行索引呢?

第三步分拆文件,也就是切分詞,把文件當中的一句一句話切分成乙個乙個詞,把切分出來的詞作為目錄,也就是做成索引;

索引跟文件存在關聯關係;把這些內容寫入到lucene的索引庫中;

(2)搜尋流程

通過lucene的查詢語法,從索引庫中查詢,返回結果給我們的專案;

在搜尋之前,已經把資料存入索引庫(index)中

2、索引流程詳解

(1)建立文件

獲取原始內容的目的是為了索引,在索引前需要將原始內容建立成文件(document),文件中包括乙個乙個的域(field),域中儲存內容。

這裡我們可以將磁碟上的乙個檔案當成乙個document。document中包括一些field,如下圖:

我們建立索引後,索引跟文件如何建立關聯關係? --> 索引會記錄文件編號。

注意:每個document可以有多個field,不同的document可以有不同的field,同乙個document可以有相同的field(網域名稱和域值都相同)

3、分析文件

將原始內容建立為包含域(field)的文件(document),需要再對域中的內容進行分析,分析成為乙個乙個的單詞。

比如下邊的文件經過分析如下:

原文件內容:

vivo x23 8gb+128gb 幻夜藍 全網通4g手機

華為 huawei 麥芒7 6g+64g 亮黑色 全網通4g手機

分析後得到的詞:

vivo, x23, 8gb, 128gb, 幻夜, 幻夜藍, 全網, 全網通, 網通, 4g, 手機, 華為, huawei, 麥芒7。。。。

切分後得到的詞用來做成索引(目錄)。

4、索引文件

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

建立索引是對語彙單元索引,通過詞語找文件,這種索引的結構叫倒排索引結構。

倒排索引結構是根據內容(詞彙)找文件,如下圖:

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

5、lucene底層儲存結構把所有資料組成文件集合,把文件資料(域值)提取出來,進行切分詞操作,詞組成關鍵字目錄(索引),關鍵字索引和lucene給每個文件分配的document id有乙個關聯關係;查詢的時候,先查詢詞(關鍵字),通過詞找到文件號,再通過文件號搜尋到具體的文件,很快提取出正文內容並展示。

lucene 全文檢索

在講全文檢索之前,先說下資訊檢索。資訊檢索通俗的講,就是從資訊集合中找出與使用者相關的資訊,除了文字之外,還有音訊 影象等。全文檢索 把使用者的查詢請求和全文中的每個詞進行比較,不考慮查詢請求與文字語義上的匹配。b 全文檢索是指計算機索引程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞...

Lucene全文檢索

流程圖 一.建立文件 文件域 注 每乙個doucment可以有多個field,不同的document可以有不同的field,同乙個document可以有相同的field 網域名稱和域值都相同 每乙個文件都有唯一的編號 二.分析文件 將文件中的大寫轉化成小寫,清除 is a 標點 停用詞等過程生成語彙...

Lucene全文檢索初探

1 全文檢索是什麼 先建立索引,再對索引進行搜尋的過程。2 為什麼需要全文檢索 在網頁搜尋時,如果沒有全文檢索,每一次檢索資料都會對資料庫進行查詢,當資料庫的資料量非常大時,搜尋起來非常耗時以及耗費資源,所以我們可以先將資料庫的資料採集出來,提前對這些資料進行整理,建立索引,將這些索引檔案儲存到伺服...