資源描述:
《《Sphinx全文檢索》PPT課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、sphinx全文檢索什么是全文檢索一、生活中的數(shù)據(jù)總體分為:結(jié)構(gòu)化數(shù)據(jù):指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫,元數(shù)據(jù)等。非結(jié)構(gòu)化數(shù)據(jù):指沒有固定格式或不定長的數(shù)據(jù),如郵件,word文檔等。半結(jié)構(gòu)化數(shù)據(jù):如XML,HTML等,根據(jù)需要可按結(jié)構(gòu)化數(shù)據(jù)處理,也可以抽取純文本按非結(jié)構(gòu)化數(shù)據(jù)處理。非結(jié)構(gòu)化數(shù)據(jù)還有一種叫法:全文數(shù)據(jù)。二、按數(shù)據(jù)的分類,搜索也分為兩種:對結(jié)構(gòu)化數(shù)據(jù)的搜索:如對數(shù)據(jù)庫的搜索:SQL語句。再如windows的搜索:文件名,類型,修改時間。對非結(jié)構(gòu)化數(shù)據(jù)的搜索:如windows對文件內(nèi)容的搜索。Linux下得grep命令。再如Google和百度可以搜素大
2、量內(nèi)容數(shù)據(jù)。對于非結(jié)構(gòu)化的數(shù)據(jù)搜索也叫做對全文數(shù)據(jù)的搜索。三、對全文數(shù)據(jù)的搜索還可以分為兩種1、順序掃描:如要找內(nèi)容包含某個字符串的文件,會一個文檔一個文檔的從頭到尾的找,如Like查找。2、索引掃描:把非結(jié)構(gòu)化的數(shù)據(jù)中的內(nèi)容提取出來一部分重新組織,讓它變的有結(jié)構(gòu)化,這部分我們提取出來的數(shù)據(jù)就叫做索引模擬詞典Linux是什么,Linux是一個開源的操作系統(tǒng)。。1頁Apache是什么?Apache是一個開源的Web服務(wù)器。2頁MySQL是什么?MySQL是一個開源的數(shù)據(jù)庫。。3頁PHP是什么?PHP是一個開源的腳本語言。。4頁Linux1頁PHP4頁MySQL3頁Apach
3、e2頁全文檢索大體分兩個過程:索引創(chuàng)建(Indexing)和搜索索引(Search)。索引創(chuàng)建:將現(xiàn)實世界中所有的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提取信息,創(chuàng)建索引的過程。搜索索引:就是得到用戶的查詢請求,搜索創(chuàng)建的索引,然后返回結(jié)果的過程。三個重要問題索引里面究竟存些什么?(Index)如何創(chuàng)建索引?(Indexing)如何對索引進(jìn)行搜索?(Search)一、索引里面究竟存些什么?為什么順序掃描的速度慢?非結(jié)構(gòu)化數(shù)據(jù)中所存儲的信息是每個文件包含哪些字符串,已知文件,欲求字符串,從文件到字符串的映射。而我們想搜索的信息是哪些字符串都在哪個文件中有,已知字符串,欲求文件,從字符串到文件
4、的映射。如果有個東西總能夠保存從字符串到文件的映射?大大提高搜索速度??偰鼙4孢@種關(guān)系的東西就是索引。索引所保存的信息一般如下:假設(shè)我現(xiàn)在有100篇文檔,從1到100表示。SphinxPHPLinux2566172345233287654478詞典倒排表二、如何創(chuàng)建索引?全文檢索的索引創(chuàng)建過程一般有以下幾步:一些需要創(chuàng)建索引的文檔(Documents)。將原文檔傳給分詞組件(Tokenizer)。將得到的詞元(Token)傳給語言處理組件(LinguisticProcessor)。將得到的詞(Term)傳給索引組件(Indexer)。第一步:一些創(chuàng)建索引的文檔。文檔1:S
5、tudentsshouldbeallowedtogooutwiththeirfriends,butnotallowedtodrinkbeer.文檔2:MyfriendJerrywenttoschooltoseehisstudentsbutfoundthemdrunkwhichisnotallowed.第二步:將原文檔傳給分詞組件(Tokenizer)。分詞組件(Tokenizer)會做以下幾件事情(此過程稱為Tokenize):1.將文檔分成一個一個單獨的單詞。2.去除標(biāo)點符號。3.去除停詞(Stopword)。所謂停詞(Stopword)就是一種語言中最普通的一些單詞:
6、英語中的停詞(Stopword)如:“the”,“a”,“this”等。中文中的停詞如:‘是’‘的’‘這個’等。對于每一種語言的分詞組件(Tokenizer),都有一個停詞(stopword)集合。經(jīng)過分詞(Tokenizer)后得到的結(jié)果稱為詞元(Token)。在我們的例子中,便得到以下詞元(Token):Students、allowed、go、their、friends、allowed、drink、beer、My、friend、Jerry、went、school、see、his、students、found、them、drunk、allowed。第三步:將得到的詞元(
7、Token)傳給語言處理組件(LinguisticProcessor)。語言處理組件主要是對得到的詞元做一些同語言相關(guān)的處理:對于英語,語言處理組件一般做以下幾點:變?yōu)樾?Lowercase)。2.將單詞縮減為詞根形式,如“cars”到“car”等。3.將單詞轉(zhuǎn)變?yōu)樵~根形式,如“drove”到“drive”等。語言處理組件的結(jié)果稱為詞(Term)。在我們的例子中,經(jīng)過語言處理,得到的詞(Term)如下:Student、allow、go、their、friend、allow、drink、beer、my、friend、jerry