lucene介紹

1. 搜索介紹

1.1. 搜索的實現方案

1.1.1. 傳統的實現方案

根據用戶輸入的搜索關鍵字(java),應用服務器通過sql語句操作數據庫,數據庫返回搜索結果給應用服務器,應用服務器再響應用戶。

傳統實現方案的特點:用戶量很大,數據量也很大,數據庫服務器壓力很大,查詢速度慢。



1.1.2. lucene實現方案(全文檢索實現方案)

根據用戶輸入的搜索關鍵字(java),應用服務器通過lucene提供的API操作索引庫,索引庫返回相關搜索結果給應用服務器,應用服務器再響應用戶。

 

lucene的實現方案:解決用戶量很大,數據量也很大,業務系統對查詢速度要求高的業務需求(實時查詢)。



1.2. 數據查詢方法

1.2.1. 順序掃描法

舉個例子:我們有大量的文件,比如ABC......。需要找出文件內容中包含有java的所有文件。需要從A文件開始查找,再B文件,然後再C文件,一直找到最後一個文件,才能得到內容中包含有java的所有文件。

順序掃描法的特點:如果文件數量很多,查找速度很慢。

1.2.2. 倒排索引法(反向索引法)(重要)

舉個例子:使用新華字典查詢漢字,首先找到偏旁部首對應的目錄,再根據目錄找到目標漢字。

 

lucene建立倒排索引:

文件一(編號0):we like java java java

文件二(編號1)we like lucene lucene luene

Term

(DocFreq)

(Pos)

we

(01) (11)

(0) (0)

like

(01) (1,1)

(1) (1)

java

(03)

(234)

lucene

(13)

(234)

說明:

1. 倒排索引,就是建立詞語與文檔的對應關係(詞語再什麼文件出現,出現了多少詞,在什麼位置出現)

2. 查詢的時候,直接根據搜索關鍵字,在倒排索引中找到對應關係就可以。

1.3. 搜索技術的應用場景

1. 單機軟件搜索(wps ,officeexceleclipse

2. 站內搜索(京東,淘寶)

3. 垂直搜索(限定某個行業的搜索,比如:教育,醫療)

4. 平臺搜索(百度,360,搜狗)


2. lucene介紹

2.1. lucene是什麼

luceneapache軟件基金會下的一個子項目。是一個成熟、免費、開放源代碼的全文檢索引擎工具包。提供了一套簡單易用的API,方便在目標系統中實現全文檢索功能。目前已經有很多應用系統的搜索功能是基於lucene來實現。比如eclipse幫助系統的搜索功能。

lucene能夠爲文本類型的數據建立索引,只需要把數據轉換成文本格式,lucene就可以對文檔進行索引和搜索。比如常見的word文檔、html文檔、pdf文檔。首先將文檔內容轉換成文本格式,交給lucene進行索引,把建立好的索引保存在硬盤或者內存中。然後根據用戶輸入的查詢條件,在索引文件中查找,返回查詢結果給用戶。

2.2. 全文檢索是什麼

全文檢索計算機通過索引程序,掃描文件中的每一個詞語,建立詞語與文件的對應關係(詞語在什麼文件出現,出現了多少次,在什麼位置出現)。

在查詢的時候,計算機通過檢索程序,根據搜索關鍵詞,在索引庫中查找目標內容。

2.3. lucene與搜索引擎區別

lucene是全文檢索引擎工具包,相當於汽車的發動機。搜索引擎是基於全文檢索實現,是可獨立運行的軟件系統,已經是產品,相當於汽車。

2.4. lucene官方網站

網址:http://lucene.apache.org/





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