參考:
全文檢索歸結為兩個過程:1、建立索引2、索引搜尋
先關注幾個問題:
如何建立索引?
索引中存放的是神馬東西?
如果通過索引進行搜尋?
然後關注幾個重要的概念:
反向索引
倒排表-倒排索引-倒排索引檔案
停詞權重
反向索引:儲存這種對映資訊的索引稱為反向索引
solr/lucene採用反向索引:就是從關鍵字到文件的對映過程
左邊儲存的是字串序列
右邊儲存的是字串的文件(document)編號鍊錶,稱為倒排表(posting list)
欄位串列表和文件編號鍊錶兩者構成了乙個字典。現在想搜尋」lucene」,那麼索引直接告訴我們,包含有」lucene」的文件有:2,3,10,35,92,而無需在整個文件庫中逐個查詢。如果是想搜既包含」lucene」又包含」solr」的文件,那麼與之對應的兩個倒排表去交集即可獲得:3、10、35、92。
停詞(stop word):一種語言中沒有具體含義,一般不會作為搜尋關鍵字
倒排(索引)檔案:invertedfile
倒排索引(又稱反向索引、置入檔案、反向檔案):索引表的每一項都包含乙個屬性值和記錄屬性值各記錄位置的位址。所謂倒排,即不是由記錄來確定屬性值,而是由屬性值來確定各記錄的位置。
權重:越重要的詞權重越高。
問題:如何建立索引?
建立的大致步驟:原始文件-> 分詞元件(tokenizer) -> 詞彙單元(token)-> 語言處理元件(linguistic processor) -> 得到詞(term )->索引元件(indexer)
下面是建立索引的詳細步驟:
1、把原始文件交給分詞元件(tokenizer)
分詞元件(tokenizer)會做一下幾件事情,這一過程稱為tokenize,處理得到的結果為詞彙單元(toekn)
1)將文件分成乙個個的單詞
2)去除標點符號
3)去除停詞
2、詞彙單元(token)傳給語言處理元件(linguistic processor)
語言處理元件(linguistic processor)主要是對詞元(token)做一些處理,如英文的語言處理元件主要做以下工作
1)將所有字母變為小寫(lowercase)
2)將單詞縮減為詞根(stemming)
3)將單詞轉變為詞根形式(lemmetization)
語言處理元件得到的結果為詞(term)
stemming和lemmetization的區別
stemming和lemmetization的相同點:都將單詞最終變為詞根形式
stemming和lemmetization的區別:方式不同,stemming是採用縮減的方式將單詞縮減為詞根,lemmetization是採用轉化的方式將單詞轉變為詞根
stemming和lemmetization的演算法不同:stemming是採取某種固定的演算法進行縮減,如schools縮減為school,將」tional」變為」tion」。
lemmetization是通過實現約定的格式儲存到字典中,如drove轉化為drive,兩者會有交叉的地方。
3、得到的詞(term)傳遞給索引元件(indexer)
.zip:需要的包
.asc:對於asp的應用檔案
.sha1:驗證碼檔案
如何通過索引搜尋?
1、對查詢內容進行詞法分析、語法分析、語言處理
a) 詞法分析:區分查詢內容中單詞和關鍵字,如english and chinese中,and是關鍵字,english和chinese是單詞
b) 根據查詢語法的語法規則生成一棵樹
c) 語言處理,和建立索引時處理方式是一樣一樣的,如driven變為drive
2、搜尋索引,得到符合語法樹的文件集合
3、根據查詢語句和文件的相關性,對結果進行排序
權重
tf:越大越重要
df:越大越不重要
全文檢索技術原理
lucene是solr實現的基礎,而lucene的實現基礎是全文檢索技術 接下就談談基礎的全文檢索技術實現的原理。檢索是指對資料的,所以檢索技術是針對於某一種或特有的型別的資料。而針對於不同的資料型別對應有不同的檢索方式。結構化資料 具有固定格式或有限長度的資料,資料庫 元資料 非結構化資料 長度不...
全文檢索的基本原理
我們生活中的資料總體分為兩種 結構化資料和非結構化資料。結構化資料 指具有固定格式或有限長度的資料,如資料庫,元資料等。非結構化資料 指不定長或無固定格式的資料,如郵件,word文件等。當然有的地方還會提到第三種,半結構化資料,如xml,html等,當根據需要可按結構化資料來處理,也可抽取出純文字按...
什麼叫全文檢索 全文檢索概念
全文檢索是指計算機索引程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時,檢索程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者的檢索方式。這個過程類似於通過字典中的檢索字表查字的過程。全文檢索的方法主要分為按字檢索和按詞檢索兩種。按字檢...