1.什么是全文檢索技術
是一種搜索技術,一般對于結構化數據,有固定格式和長度的數據,我們使用sql進行查詢,而對于非結構化的數據,數據格式不固定,長度也不固定的數據我們要怎么進行檢索呢?
這時候我們就要使用全文檢索技術,及先將我們的文件通過分詞器進行分詞,創建索引,然后通過索引去查找我們要找的對應的數據
2.為什么要使用全文檢索技術
數據庫的查詢語句是select * from 表名 where 查詢條件,單在數據量較大的請款改下使用select 進行權標掃描查詢效率可以而知的慢.如果大量的文件沒有索引,我們怎么去查找我們要的數據內容呢?我們可以使用順序掃描法,可是這種方法是將文件從頭到尾并且是一個文件一個文件的進行 掃描,這個效率可想而知很慢.因此我們需要全文檢索技術,來達到快速檢索
3.數據結構:
生活中的數據總體分為兩種:
1.結構化數據:指具有固定格式和長度的數據
2.非結構化數據:指不定長或者沒有固定格式的數據
非結構化數據有一種叫法是全文數據
因此根據數據的結構劃分,數據的搜索也分為兩種:
1.對結構化數據的搜索:例如對數據庫的搜索,使用sql進行搜索,如利用window是索引對文件名,類型,修改時間進行搜索
2.對非結構化數據的搜索如利用windows的搜索也可以搜索文件內容Linux下的grep,再如用Google和百度百度可以搜索大量內容數據
對于非結構化數據也及對全文數據的搜索主要有兩種方法
一種是順序掃描法(serial Scanning ) ,一種是全文檢索,即先建立索引,然后在通過索引進行搜索的過程稱為全文檢索.
4.全文檢索分為兩個過程:
第一步:創建索引:將結構化數據和非結構化的數據提取信息,創建索引的過程
第二步:搜索索引:就是得到用戶的查詢請求,搜索創建的索引,然后返回結果的過程
5.如果創建索引:
我們將文件使用ik分詞器進行分詞(將詞元傳給索引組件,索引組件根據得到的詞創建字典,然后進行排序,將詞合并,計算出該詞出現的頻率,)
6.如何搜索:
根據用戶輸入的查詢語句,然后使用分詞器對查詢的語句進行分詞,根據分詞搜索所以,獲取符合語法的文檔,然后根據得到的文檔和查詢語句的想關性,對結果進行排序.(影響一個詞在一篇文章中的重要性,要看其在該文章中出現的次數tf,出現的次數越多說明其越重要,其分數也就越高,再看有多少文章包含了該次即df,越多的文章包含,說明其越不重要,分數越低,然后根據一定的算法對我們的搜索結果進行打分,分數高的排在前面).
7索引的過程:
1.有一系列的被索引文件
2.被索引文件經過語法分析和語言處理形成一系列的詞,
3.經過索引創建形成詞典和反洗愛過你索引表
4.通過索引存儲將索引寫入硬盤
搜索的過程:
1.用戶輸入查詢語句
2.對查詢語句進行分詞,
3.通過語法分析得到查詢書
4.通過索引存儲將索引讀到內存中
5.利用查詢書搜索索引,從而得到每個詞的文檔鏈表,對文檔鏈表進行交叉,得到結果文檔
6.將得到的文檔對查詢的想關性進行排序
7.返回查詢結果給用戶