我們先看一下乙個搜尋引擎的大體設計圖:
這裡面我們看到了輸入部分
, 索引部分
, 儲存部分
, 還有搜尋部分
, 簡單的說擁有這些部件你的產品就可以叫做乙個索引引擎了
,ms 使用的桌面搜尋服務
(index service)
也是這幾部分組成的
, 那麼我們接下來一步一步分析這幾部分:
1. source
作為輸入部分
, 為乙個指定的檔案目錄
, 先要具備全目錄掃瞄
, 這時要看我們是否設定了檔案
filter,
很多時候我們只需要把
pdf,html
等有用的檔案去做索引
, 索引設定
filter
還是可以提供更好的效能和準確度
, 這裡我們建立乙個
document
模組負責檔案目錄的管理
, 該模組要具備檔案系統掃瞄
, 檔案型別過慮
, 還要能將掃瞄得到的有用檔案路徑儲存到記憶體中為以後開啟這些檔案做索引做準備
, 這裡我使用了乙個
vector
做的檔案路徑儲存.
2. analysis
模組負責對檔案內容進行解析
, 不同的檔案呼叫不同的解析器
, 這裡的檔案就是由上面的
vector
提供的, 這裡設計一定要為將來其他使用者使用拓展檔案型別提供介面
, 否則你的設計就太不
flexible,
可以考慮諸如
façade
的設計模式開發
. 我在這裡抽象了乙個虛基類:
class cfileparserbase ;
其它類需要去過載檔案解析和檔案內容獲取兩個基本函式.
3. 將解析的關鍵字建立反向索引
, 這裡我使用的是資料庫
, 因為好的
database
會在你查詢時提供優化
, 速度也就會更快一些
, 效能對於搜尋引擎來說是最重要的
. 這一部分的實現我下篇文章詳細說:
搜尋引擎反作弊之 整體技術思路
如上所述,目前搜尋引擎作弊手段五花八門,層出不窮,作為應對方的搜尋引擎,也相應調整技術思路,不斷有針對性地提出反作弊的技術方案,所以如果整理反作弊技術方案,會發現技術方法很多,理清思路不易。儘管如此,如果對大多數反作弊技術深入分析,會發現在整體技術思路上還是有規律可循。從基本的思路角度,可以將反作弊...
搜尋引擎的技術架構
作為網際網路應用中最具技術含量的應用之一,優秀的搜尋引擎需要複雜的架構和高效的演算法,以此來支撐對海量資料的獲取 儲存,以及對使用者查詢的快速而準確的響應。下圖所示是乙個通用搜尋引擎的架構示意圖。搜尋引擎由許多模組組成,各自負責不同的功能作用,相互配合形成完整的架構。搜尋引擎的資訊來自於網際網路網頁...
搜尋引擎的技術架構
搜尋引擎按其工作方式主要可分為三種 分別是全文搜尋引擎 full text search engine 目錄索引類搜尋引擎 search index directory 元搜尋引擎 meta search engine 全文搜尋引擎 雖然有搜尋功能,但嚴格意義上不能稱為真正的搜尋引擎,只是按目錄分類...