搜索引擎是對數(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)來邏輯表達和實現(xiàn)的數(shù)據(jù),嚴格地遵循數(shù)據(jù)格式與長度規(guī)范怔蚌,主要通過關(guān)系型數(shù)據(jù)庫進行存儲和管理巩步。指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫桦踊,元數(shù)據(jù)等椅野。
非結(jié)構(gòu)化數(shù)據(jù): 又可稱為全文數(shù)據(jù),不定長或無固定格式籍胯,不適于由數(shù)據(jù)庫二維表來表現(xiàn)竟闪,包括所有格式的辦公文檔、XML杖狼、HTML炼蛤、Word 文檔,郵件蝶涩,各類報表理朋、圖片和咅頻絮识、視頻信息等。
說明:如果要更細致的區(qū)分的話嗽上,XML次舌、HTML 可劃分為半結(jié)構(gòu)化數(shù)據(jù)。因為它們也具有自己特定的標簽格式炸裆,所以既可以根據(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)過崎岂。你肯定需要從頭到尾把報紙閱讀掃描一遍然后標記出關(guān)鍵字在哪些版塊出現(xiàn)過以及它的出現(xiàn)位置。
這種方式無疑是最耗時的最低效的闪湾,如果報紙排版字體小冲甘,而且版塊較多甚至有多份報紙,等你掃描完你的眼睛也差不多了途样。
全文搜索: 對非結(jié)構(gòu)化數(shù)據(jù)順序掃描很慢江醇,我們是否可以進行優(yōu)化?把我們的非結(jié)構(gòu)化數(shù)據(jù)想辦法弄得有一定結(jié)構(gòu)不就行了嗎何暇?
將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來陶夜,重新組織,使其變得有一定結(jié)構(gòu)裆站,然后對此有一定結(jié)構(gòu)的數(shù)據(jù)進行搜索条辟,從而達到搜索相對較快的目的。
這種方式就構(gòu)成了全文檢索的基本思路遏插。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息捂贿,我們稱之為索引。
這種方式的主要工作量在前期索引的創(chuàng)建胳嘲,但是對于后期搜索卻是快速高效的厂僧。