全文資訊檢索介紹及演算法分析
一、摘要
本文主要介紹了全文資訊檢索的概念、應用領域、演算法分類、技術難點和演算法比較。及一款實現全文檢索的資料結構和演算法。
二、什麼是全文資料庫和全文資訊檢索
儲存在資料庫中的記錄資料,從型別上可以分為兩種。其一是結構化資料,象字元、日期、數值、貨幣等,這些資料都是具有有限長度或固定格式的資料;其二是非結構化資料,也叫全文資料,象簡歷、簡介、**等,這些資料都是以不定長、非固定格式儲存的字元型資料。
現有的資料庫系統,都是以結構化資料為檢索的主要目標,因為實現相對簡單。比如數值檢索,可以建立一張排序好的索引表,以二分法實現查詢,速度很快。但對於非結構化資料,即全文資料,要想實現檢索,相對難度要大的很多了。
當然,你也許會說:「這個多簡單呀,把全文資料讀到記憶體,然後進行比較查詢不就可以了?」。不錯,的確是乙個很樸素想法。不過最嚴重的問題是,如果資料庫中有1萬條,10萬條,100萬條記錄的話,可以想象一下檢索所消耗的時間了吧?!如果乙個全文資料庫系統,對一條檢索命令的響應時間超過了半分鐘,那麼沒有使用者是能夠容忍的了。
因此,全文檢索的主要目的,就是實現對大容量的非結構化資料的快速查詢。
三、應用領域
現在,隨著計算機使用的越來越普及,資料的積累越來越多,全文檢索的要求也就越來越迫切了。目前,主要的應用領域是:圖書館資料庫、情報資料庫、專利資料庫、醫藥資料庫、辦公自動化、歷史資料庫、電子出版系統、等等。
索引方式
索引比
索引速度
檢索速度
誤查
漏查
詞索引0.8 ~ 2.0慢快
有有字索引0.3 ~ 2.0
稍快稍慢有無
五、一款中文全文資訊檢索演算法的實現
這個演算法是2023年設計並實現的。十年過去了,新版本中使用了更高階的技術,因此該演算法已經廢棄,並得以公開給大家。計算機界有乙個著名的命題:程式 = 資料結構 + 演算法。而公開的這個設計,正是資料結構和演算法的完美體現。呵呵,不吹牛了,看看如何實現的吧。
i 基本原理
六、結束語
學習計算機軟體設計,最重要的一門課程就是《資料結構》。這套全文檢索演算法,正是依靠精妙的資料結構構建出來的,其實說起來也很簡單,就是鍊錶陣列。2023年的時候,pc機大多執行著 dos + windows 3.1 + 中文環境(gb2312),這套演算法正是適應當時的環境而設計的。現在十年過去了,隨著計算機軟硬環境的提公升和全文資料量的增長,該演算法雖然已經廢棄,但通過該演算法,大家一定能體會出「資料結構」的重要性。2023年,我又設計了新的全文檢索演算法,使用的是「資料結構」中的「雜湊表」。不過現在保密,也許10年後再公布吧,嘿嘿。
全文檢索介紹
全文檢索介紹 資料分類 非結構化資料搜尋 全文搜尋 倒排索引 inverted index 建立索引 1 將文件切分為乙個乙個單獨的詞 2 去除標點符號 3 去除停詞 stop word 1 將單詞轉為小寫 lowercase 2 將單詞縮減為詞根形式 stemming 3 將單詞轉變為詞根形式 l...
Lucene 全文檢索技術介紹
前言 本文只介紹了全文檢索的基礎概念,後面陸續會介紹 lucece 的使用。我們生活種的資料總體分為兩種 結構化資料和非結構化資料 常見的結構化資料也就是資料庫中的資料。在資料庫中搜尋很容易實現,通常都是使用sql語句進行查詢,而且能很快的得到查詢結果。為什麼資料庫搜尋很容易?因為資料庫中的資料儲存...
oracle全文索引(全文檢索)的介紹,使用和創
全文索引 背景介紹 很多時候需要根據key words關鍵字去匹配對應的值,對於大量的資料而已,如果使用like,或者instr函式,速度則會很慢,這個時候,全文檢索對比其他的模糊查詢,有著明顯的速度優勢。但是因為分詞,所以會占用的一定的空間。如果空間足夠以及對速度有一樣的需求,可以考慮全文檢索。根...