作為知識(shí)管理中最核心的部分,知識(shí)采集器無疑具有著非常重要的作用,是我們所有工作和服務(wù)的基礎(chǔ),在這一部分我們就我們的系統(tǒng)根據(jù)我們的需求進(jìn)行分析。
先來看一下我們的采集器都作了哪些工作?
和普通的爬蟲一樣,需要實(shí)現(xiàn)給一個(gè)入口的網(wǎng)頁(yè)地址,那么它能夠自動(dòng)的進(jìn)行地址的分析和解析,并逐一的對(duì)地址進(jìn)行請(qǐng)求并獲取內(nèi)容。獲取后可以保存起來。
首先,就拿獲取來說,我們的爬蟲是針對(duì)特定站點(diǎn)服務(wù)的,所以我們?cè)谶@里第一步實(shí)現(xiàn)頁(yè)面的抓取,這是核心類。在此基礎(chǔ)上我們需要對(duì)該類進(jìn)行進(jìn)一步的包裝。包裝之后就可以根據(jù)我們提供的站點(diǎn)列表中進(jìn)行抓取,并且抓取的時(shí)候按照我們定義的規(guī)則進(jìn)行抓取。舉個(gè)例子,我們定義只一些正則表達(dá)式,根據(jù)匹配的進(jìn)行進(jìn)行獲取。并且這種匹配我們期望是可以進(jìn)行嵌套的。
其次,是我們的存儲(chǔ)工作,抓取為我們的提供了內(nèi)容,那么如何進(jìn)行這些內(nèi)容的存儲(chǔ)呢?因?yàn)樵谖覀兊拇鎯?chǔ)直接關(guān)系到我們未來的檢索。在這里需要考慮到系統(tǒng)的運(yùn)行會(huì)導(dǎo)致知識(shí)庫(kù)內(nèi)容的大量增加,如果僅使用單一的數(shù)據(jù)庫(kù)肯定無法滿足需要,所以,在存儲(chǔ)的時(shí)候,我們需要考慮到采用分區(qū)表,甚至是分布式數(shù)據(jù)庫(kù)的應(yīng)用,只有這樣才能夠緩解我們的數(shù)據(jù)存儲(chǔ)和查詢的壓力。因?yàn)槲覀兊漠a(chǎn)品畢竟不像是BI那樣需要對(duì)數(shù)據(jù)進(jìn)行分析,對(duì)我們來說前期的數(shù)據(jù)組織是非常重要的。在這里我們有Oracle和SQL
SERVER 2005兩種選擇,這里我們選擇SQL SERVER 2005。
好了,采集器做了三種工作。
第一,獲取網(wǎng)頁(yè),第二,分析網(wǎng)頁(yè),第三,存儲(chǔ)網(wǎng)頁(yè)。
我們?cè)讷@取的時(shí)候需要編寫核心類或者組件,便于我們以后應(yīng)用在其他的方面,所以我們把獲取的規(guī)則這部分?jǐn)U展出來,可以外部的進(jìn)行規(guī)則定義。
在分析網(wǎng)頁(yè)這部分,可以進(jìn)行分析的定義,這樣我們可以保證在抓取的時(shí)候去掉我們不需要的部分。而且我們必須保證我們的分析可以進(jìn)行多次的調(diào)用分析。
在存儲(chǔ)頁(yè)面時(shí)需要考慮的是進(jìn)行分布式的存儲(chǔ),這就要求我們存儲(chǔ)時(shí)進(jìn)行自動(dòng)化的存儲(chǔ),根據(jù)一定的規(guī)則邏輯存儲(chǔ)到不同的服務(wù)器上面。
上面就是我們對(duì)網(wǎng)絡(luò)蜘蛛的分析,基于上面這些分析,我們就對(duì)系統(tǒng)中的知識(shí)采集器有了明確的認(rèn)識(shí)。更為具體的設(shè)計(jì)我將會(huì)在以后的過程中陸續(xù)跟進(jìn)。



