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