為了解決資料庫壓力和速度的問題,我們的資料庫就變成了索引庫,我們使用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 為什麼需要全文檢索 在網頁搜尋時,如果沒有全文檢索,每一次檢索資料都會對資料庫進行查詢,當資料庫的資料量非常大時,搜尋起來非常耗時以及耗費資源,所以我們可以先將資料庫的資料採集出來,提前對這些資料進行整理,建立索引,將這些索引檔案儲存到伺服...