1.下载模块
* 采用HTTP1.1协议,支持HTTPS等常用协议。
* 编码问题: 支持自动识别,遇到得不到编码的网页采用分析网页的方式判断编码。
* 静态数据: 如新闻、博客等数据,直接下载生成XML存储到持久层以便下一环处理。
* 动态数据: 要支持登录验证,以及支持Cookie,要能理解简单的js等。
* 更新频率: 每次下载的数据和上次数据作一次对比(把上次的内容取MD5比较),如果相同,权重就降低一个等级,权重越小更新频率越低,反之更高,也可人工指定更新频率。
* URL去重:基于MD5压缩映射存储,存储库使用Berkeley DB,将压缩后的的URL存入key中,布尔值作为value
2.数据处理模块
* 初步处理: 遍历DOM树,先去除 (主要针对传统网页)导航、JS、广告、没有文字的空白块等会对抽取结果的准确性产生干扰的信息。
* 标题抽取: 遍历DOM树,标题一般包含在STRONG、H1、TITLE等标签中,抽取这些节点信息并做分词 处理,分的词在正文中出现次数最多的那条文本一般就是标题。
* 正文抽取:判断正文区域,也许在p,div等节点中,遍历这些节点计算其中内容长度,文字连续越长后面的文字得分越高... ...(办法很多,有待深入)。
3. 索引和分词模块
* 索引和分词: 可提高检索精确度和速度,将处理好的数据进行分词、索引采用增量索引(准备封装开源组件)。
4. 数据存储模块
* 关系型数据库?文件系统?
5. 分布式
* 有分布式的的功能,包括采集、数据处理等,能够快速根据需要部署成分布式的应用来应对高并发需求(这个最后实现,先考虑进去)
6. 系统后台管理模块
* 系统管理平台: 灵活可定制组合各个模块运行,对系统的各项参数可以自由配置。
下载可设置网页的下载参数规则等,比如更新频率等。
数据处理默认为自动抽取正文,可针对一些网页写模板进行处理(比如动态网页)。
以上只是一个粗略的构想,需要一个一个去完善,如果您是这方面的高手请指教!
* 采用HTTP1.1协议,支持HTTPS等常用协议。
* 编码问题: 支持自动识别,遇到得不到编码的网页采用分析网页的方式判断编码。
* 静态数据: 如新闻、博客等数据,直接下载生成XML存储到持久层以便下一环处理。
* 动态数据: 要支持登录验证,以及支持Cookie,要能理解简单的js等。
* 更新频率: 每次下载的数据和上次数据作一次对比(把上次的内容取MD5比较),如果相同,权重就降低一个等级,权重越小更新频率越低,反之更高,也可人工指定更新频率。
* URL去重:基于MD5压缩映射存储,存储库使用Berkeley DB,将压缩后的的URL存入key中,布尔值作为value
2.数据处理模块
* 初步处理: 遍历DOM树,先去除 (主要针对传统网页)导航、JS、广告、没有文字的空白块等会对抽取结果的准确性产生干扰的信息。
* 标题抽取: 遍历DOM树,标题一般包含在STRONG、H1、TITLE等标签中,抽取这些节点信息并做分词 处理,分的词在正文中出现次数最多的那条文本一般就是标题。
* 正文抽取:判断正文区域,也许在p,div等节点中,遍历这些节点计算其中内容长度,文字连续越长后面的文字得分越高... ...(办法很多,有待深入)。
3. 索引和分词模块
* 索引和分词: 可提高检索精确度和速度,将处理好的数据进行分词、索引采用增量索引(准备封装开源组件)。
4. 数据存储模块
* 关系型数据库?文件系统?
5. 分布式
* 有分布式的的功能,包括采集、数据处理等,能够快速根据需要部署成分布式的应用来应对高并发需求(这个最后实现,先考虑进去)
6. 系统后台管理模块
* 系统管理平台: 灵活可定制组合各个模块运行,对系统的各项参数可以自由配置。
下载可设置网页的下载参数规则等,比如更新频率等。
数据处理默认为自动抽取正文,可针对一些网页写模板进行处理(比如动态网页)。
以上只是一个粗略的构想,需要一个一个去完善,如果您是这方面的高手请指教!