作为知识管理中最核心的部分,知识采集器无疑具有着非常重要的作用,是我们所有工作和服务的基础,在这一部分我们就我们的系统根据我们的需求进行分析。
先来看一下我们的采集器都作了哪些工作?
和普通的爬虫一样,需要实现给一个入口的网页地址,那么它能够自动的进行地址的分析和解析,并逐一的对地址进行请求并获取内容。获取后可以保存起来。
首先,就拿获取来说,我们的爬虫是针对特定站点服务的,所以我们在这里第一步实现页面的抓取,这是核心类。在此基础上我们需要对该类进行进一步的包装。包装之后就可以根据我们提供的站点列表中进行抓取,并且抓取的时候按照我们定义的规则进行抓取。举个例子,我们定义只一些正则表达式,根据匹配的进行进行获取。并且这种匹配我们期望是可以进行嵌套的。
其次,是我们的存储工作,抓取为我们的提供了内容,那么如何进行这些内容的存储呢?因为在我们的存储直接关系到我们未来的检索。在这里需要考虑到系统的运行会导致知识库内容的大量增加,如果仅使用单一的数据库肯定无法满足需要,所以,在存储的时候,我们需要考虑到采用分区表,甚至是分布式数据库的应用,只有这样才能够缓解我们的数据存储和查询的压力。因为我们的产品毕竟不像是BI那样需要对数据进行分析,对我们来说前期的数据组织是非常重要的。在这里我们有Oracle和SQL
SERVER 2005两种选择,这里我们选择SQL SERVER 2005。
好了,采集器做了三种工作。
第一,获取网页,第二,分析网页,第三,存储网页。
我们在获取的时候需要编写核心类或者组件,便于我们以后应用在其他的方面,所以我们把获取的规则这部分扩展出来,可以外部的进行规则定义。
在分析网页这部分,可以进行分析的定义,这样我们可以保证在抓取的时候去掉我们不需要的部分。而且我们必须保证我们的分析可以进行多次的调用分析。
在存储页面时需要考虑的是进行分布式的存储,这就要求我们存储时进行自动化的存储,根据一定的规则逻辑存储到不同的服务器上面。
上面就是我们对网络蜘蛛的分析,基于上面这些分析,我们就对系统中的知识采集器有了明确的认识。更为具体的设计我将会在以后的过程中陆续跟进。
评论
另外,权限和数据加密的确是知识系统中的一个关键环节。
最初的初衷是想方便自己。但现在所有的demo都已经有了,剩下的只是重构了。
这个项目我是以一个项目或者产品的性质开发的。因为打算以后自己或者和朋友开个公司。
http://leves.cnblogs.com/archive/2005/12/13/296107.html