全文檢索的基本原理

2022-03-07 00:58:34 字數 2379 閱讀 4845

我們生活中的資料總體分為兩種:結構化資料和非結構化資料。

* 結構化資料:指具有固定格式或有限長度的資料,如資料庫,元資料等。

* 非結構化資料:指不定長或無固定格式的資料,如郵件,word文件等。

當然有的地方還會提到第三種,半結構化資料,如xml,html等,當根據需要可按結構化資料來處理,也可抽取出純文字按非結構化資料來處理。

非結構化資料又一種叫法叫全文資料。

按照資料的分類,搜尋也分為兩種:

* 對結構化資料的搜尋:如對資料庫的搜尋,用sql語句。再如對元資料的搜尋,如利用windows搜尋對檔名,型別,修改時間進行搜尋等。
全文檢索的基本思路:將非結構化資料中的一部分資訊提取出來,重新組織,使其變得有一定結構,然後對此有一定結構的資料進行搜尋,從而達到搜尋相對較快的目的。

這部分從非結構化資料中提取出的然後重新組織的資訊,我們稱之索引。

這種先建立索引,再對索引進行搜尋的過程就叫全文檢索(full-text search)。

比如字典,字典的拼音表和部首檢字表就相當於字典的索引,對每乙個字的解釋是非結構化的,如果字典沒有音節表和部首檢字表,在茫茫辭海中找乙個字只能順序掃瞄。

然而字的某些資訊可以提取出來進行結構化處理,比如讀音,就比較結構化,分聲母和韻母,分別只有幾種可以一一枚舉,於是將讀音拿出來按一定的順序排列,每一項讀音都指向此字的詳細解釋的頁數。

搜尋時按結構化的拼音搜到讀音,然後按其指向的頁數,便可找到我們的非結構化資料——也即對字的解釋。

圖來自《lucene in action》

全文檢索大體分兩個過程,索引建立(indexing)和搜尋索引(search)。

* 索引建立:將現實世界中所有的結構化和非結構化資料提取資訊,建立索引的過程。

* 搜尋索引:就是得到使用者的查詢請求,搜尋建立的索引,然後返回結果的過程。

於是全文檢索就存在三個重要問題:

索引裡面究竟存些什麼?(index)

如何建立索引?(indexing)

如何對索引進行搜尋?(search)

為什麼順序掃瞄的速度慢?是由於要搜尋的資訊和非結構化資料中所儲存的資訊不一致造成的。

非結構化資料中所儲存的資訊是每個檔案包含哪些字串,也即已知檔案,欲求字串相對容易,也即是從檔案到字串的對映。

而我們想搜尋的資訊是哪些檔案包含此字串,也即已知字串,欲求檔案,也即從字串到檔案的對映。

兩者恰恰相反。於是如果索引總能夠儲存從字串到檔案的對映,則會大大提高搜尋速度。

由於從字串到檔案的對映是檔案到字串對映的反向過程,於是儲存這種資訊的索引稱為反向索引。

左邊儲存的是一系列字串,稱為詞典。

每個字串都指向包含此字串的文件(document)鍊錶,此文件鍊錶稱為倒排表(posting list)。

有了索引,便使儲存的資訊和要搜尋的資訊一致,可以大大加快搜尋的速度。

比如說,我們要尋找既包含字串「lucene」又包含字串「solr」的文件,我們只需要以下幾步:

取出包含字串「lucene」的文件鍊錶。

取出包含字串「solr」的文件鍊錶。

通過合併鍊錶,找出既包含「lucene」又包含「solr」的檔案。

缺點:加上新建索引的過程,全文檢索不一定比順序掃瞄快,尤其是在資料量小的時候更是如此。而對乙個很大量的資料建立索引也是乙個很慢的過程。

優點:順序掃瞄是每次都要掃瞄,而全文索引可一次索引,多次使用;檢索速度快。

全文檢索的索引建立過程一般有以下幾步:

分詞元件(tokenizer)會做以下幾件事情(此過程稱為tokenize):

將文件分成乙個乙個單獨的單詞;

去除標點符號;

語言處理元件(linguistic processor)主要是對得到的詞次(token)做一些同語言相關的處理。

對於英語,語言處理元件(linguistic processor)一般做以下幾點:

變為小寫(lowercase)。

將單詞縮減為詞根形式,如「cars」到「car」等。這種操作稱為:stemming。

將單詞轉變為詞根形式,如「drove」到「drive」等。這種操作稱為:lemmatization。

語言處理元件(linguistic processor)的結果稱為詞元(term)。

索引元件(indexer)主要做以下幾件事情:

利用得到的詞(term)建立乙個字典(term-documentid)

對字典按字母順序進行排序。

合併相同的詞元(term)成為文件倒排(posting list)鍊錶。

在此表中,有幾個定義:

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

pwm控制的基本原理 PWM控制的基本原理

pwm pulse width modulation 控制 脈衝寬度調製技術,通過對一系列脈衝的寬度進行調製,來等效地獲得所需要波形 含形狀和幅值 pwm控制技術在逆變電路中應用最廣,應用的逆變電路絕大部分是pwm型,pwm控制技術正是有賴於在逆 變電路中的應用,才確定了它在電力電子技術中的重要地位...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...