搜索引擎是對數(shù)據(jù)的檢索,所以我們先從生活中的數(shù)據(jù)說起。我們生活中的數(shù)據(jù)總體分為兩種:
結(jié)構(gòu)化數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù)
結(jié)構(gòu)化數(shù)據(jù): 也稱作行數(shù)據(jù),是由二維表結(jié)構(gòu)來邏輯表達(dá)和實現(xiàn)的數(shù)據(jù),嚴(yán)格地遵循數(shù)據(jù)格式與長度規(guī)范,主要通過關(guān)系型數(shù)據(jù)庫進(jìn)行存儲和管理。指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫,元數(shù)據(jù)等。
非結(jié)構(gòu)化數(shù)據(jù): 又可稱為全文數(shù)據(jù),不定長或無固定格式,不適于由數(shù)據(jù)庫二維表來表現(xiàn),包括所有格式的辦公文檔、XML、HTML、Word 文檔,郵件,各類報表、圖片和咅頻、視頻信息等。
說明:如果要更細(xì)致的區(qū)分的話,XML、HTML 可劃分為半結(jié)構(gòu)化數(shù)據(jù)。因為它們也具有自己特定的標(biāo)簽格式,所以既可以根據(jù)需要按結(jié)構(gòu)化數(shù)據(jù)來處理,也可抽取出純文本按非結(jié)構(gòu)化數(shù)據(jù)來處理。
根據(jù)兩種數(shù)據(jù)分類,搜索也相應(yīng)的分為兩種:
結(jié)構(gòu)化數(shù)據(jù)搜索
非結(jié)構(gòu)化數(shù)據(jù)搜索
對于結(jié)構(gòu)化數(shù)據(jù),因為它們具有特定的結(jié)構(gòu),所以我們一般都是可以通過關(guān)系型數(shù)據(jù)庫(MySQL,Oracle 等)的二維表(Table)的方式存儲和搜索,也可以建立索引。
對于非結(jié)構(gòu)化數(shù)據(jù),也即對全文數(shù)據(jù)的搜索主要有兩種方法:
順序掃描
全文檢索
順序掃描: 通過文字名稱也可了解到它的大概搜索方式,即按照順序掃描的方式查詢特定的關(guān)鍵字。
例如給你一張報紙,讓你找到該報紙中“平安”的文字在哪些地方出現(xiàn)過。你肯定需要從頭到尾把報紙閱讀掃描一遍然后標(biāo)記出關(guān)鍵字在哪些版塊出現(xiàn)過以及它的出現(xiàn)位置。
這種方式無疑是最耗時的最低效的,如果報紙排版字體小,而且版塊較多甚至有多份報紙,等你掃描完你的眼睛也差不多了。
全文搜索: 對非結(jié)構(gòu)化數(shù)據(jù)順序掃描很慢,我們是否可以進(jìn)行優(yōu)化?把我們的非結(jié)構(gòu)化數(shù)據(jù)想辦法弄得有一定結(jié)構(gòu)不就行了嗎?
將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來,重新組織,使其變得有一定結(jié)構(gòu),然后對此有一定結(jié)構(gòu)的數(shù)據(jù)進(jìn)行搜索,從而達(dá)到搜索相對較快的目的。
這種方式就構(gòu)成了全文檢索的基本思路。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息,我們稱之為索引。
這種方式的主要工作量在前期索引的創(chuàng)建,但是對于后期搜索卻是快速高效的。