1. 程式人生 > >2018-11-13 全文檢索 -lucene

2018-11-13 全文檢索 -lucene

① 什麼是全文檢索

1.資料的分類
1)結構化資料
格式固定,長度固定,資料型別固定。
例如資料庫中的資料
2)非結構化資料
word文件,pdf文件,郵件,html
格式不固定,長度不固定,資料型別不固定

 


2.資料的查詢


1)結構化資料的查詢

sql語句,查詢結構化資料的方法,簡單,速度快

 

2)非結構化資料的查詢

從文字文件中找出包含spring單詞的檔案

1 目測(坑爹呢)
2使用程式把文件讀取到記憶體中,然後匹配字串,順序掃描
3 把非結構化資料變成結構化資料
先根據空格進行字串拆分,得到一個單詞列表,基於單詞列表建立一個索引
然後查詢索引,根據單詞和文件的對應關係找到文件列表,這個過程就叫做全文檢索,

索引;一個為了提高查詢速度 建立某種資料結構的集合。

 

3.全文檢索
先建立索引然後查詢索引的過程就叫做全文檢索,
索引一次建立可以多次使用,表現為每次查詢速度很快,

② 全文檢索的應用場景

1.搜尋引擎
百度,360搜尋,谷歌,搜狗

2.站內搜尋
論壇搜尋.微博,文章搜尋

3.電商搜尋

淘寶搜尋,京東搜尋
4. 只要是有搜尋的地方,就可以使用全文檢索技術


三丶 什麼是lucene

lucene是一個局域java開發全文檢索工具包

四丶 lucene實現全文檢索的流程,

1 建立索引
1)獲得文件,
原始文件,要基於那些資料來進行搜尋,那麼這些資料就是原始文件
搜尋引擎;使用爬蟲獲得原始文件,
站內搜尋:資料庫中的資料
案例:直接使用io流讀取磁碟上的檔案

2)構建文件物件
對應每個原始文件建立一個document物件
每個document物件中包含多個域 (filed)
域中儲存的就是原始文件資料
域的名稱
域的值
每個文件都是有一個唯一的編號,就是文件id
3)分析文件
就是分詞的過程
1.根據空格進行字串拆分,的到一個單詞列表
2.把單詞統一轉換成小寫
3.去除標點符號
4.去除停用詞
停用詞:無意義的詞
每個關鍵詞都封裝成一個term物件中
term中包含兩部分內容;
關鍵詞所在的域
關鍵詞本身
不同的域中拆分出來的相同的關鍵詞是不同的term

4)建立索引
基於關鍵詞列表建立一個索引,儲存到索引庫中
索引庫中:
索引
document物件
關鍵詞和文件的對應關係
通過詞語找文件, 這種索引的結構膠倒排索引結構


2.查詢索引
1) 使用者查詢介面
使用者輸入查詢條件的地方
例如:百度的搜尋框
2)把關鍵詞封裝成一個查詢物件
要查詢的域
要搜尋的關鍵詞
3)執行查詢
根據要查詢的關鍵詞到對應的域上進行搜尋
4)渲染結果
根據文件的id找到文件物件
對關鍵詞的進行高亮顯示
分頁顯示
最終展示給使用者