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

