asp.net搜索引擎(网络爬虫)设计及研发
李蒙强 博客园

一、背景

随着网络的不断发展,各种网页铺天盖地,信息资源泛滥,如何有效的提取并利用这些信息成为一个巨大的挑战,搜索引擎(Search Engine)如Google、Baidu等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,见下图:

 

1、网页资源无关性问题:专业搜索引擎由于它的客户群体太泛泛,所以用户进行搜索时经常搜索到自己并不想要的资源;

2、网络覆盖率问题:有限的搜索引擎与无限的网络数据资源是矛盾的;

3、数据结构化问题:搜索引擎对于一定结构的数据是无能为力的;

4、语义检索问题:搜索引擎一般都是基于关键字的查询,难以支持特定语义信息的查询,例如行业领域中的特定语义;

综上所述,在咱们行业领域我们应该做自己行业独特的搜索引擎(网络爬虫),可能叫搜索引擎太大了,这里我们还是叫网络爬虫吧,比如做电子政务领域的,我们可以提供给政务客户电子政务相关的信息资源,另外结合我们的平台给不同政府部门人员提供不同的视角,这无疑是我们研发网络爬虫一种很好的驱动方式!

二、概念及原理

网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,见下图:

 

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
网络爬虫原理见下图,主要包括:
1、爬虫模块:这个现在比较成熟,有bs的也有cs的,一般都是采用广度优先的算法去抓取网络资源,采用多线程模式,有一套最基本的配置。
2、预处理模块:一般结合爬虫模块使用,在爬取资源的同时对网页进行分词、索引,形成索引库;
3、查询服务模块:有了前面两个,就可以结合业务应用提供各种查询服务;

 

三、技术选型

这一块技术在JAVA领域已经有很多开源的网络爬虫,但是在.net领域非常少,基本上是零散的,本人经过搜索整理之后,把最核心的基本模块的技术基本研究透了,这个.net版的搜索引擎已经算是比较好的一种了,主要技术如下:

1、爬虫模块:NWebCrawler;

2、HTML解析:Winista.HtmlParser,这个非常专业;

3、分词、索引:Apache-Lucene.Net-3.0.3,这个不用介绍了,Apache基金会的东西!

四、需求矩阵

 

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢