垂直搜索引擎开发房产行业实例

  • 格式:docx
  • 大小:23.98 KB
  • 文档页数:3

垂直搜索引擎开发房产行业实例
1.垂直搜索的定义
要理解垂直搜索,下面的两个概念需要分清楚:
垂直搜索:垂直搜索是针对某一行业或某一领域范围内的数据检索。

垂直搜索的主要工作就是将网页信息进行结构化抽取,把非结构化数据转化成统一格式的信息数据库。

垂直搜索是相对百度、谷歌这类通用搜索引擎提出的概念。

百度、谷歌的讲究的是搜索的广度,具体的来说就是搜索引擎搜索到的页面数量,搜索到的内容涵盖互联网的范围,要求的是广和全。

垂直搜索也要求广和全,但是这个广和全是在行业范围内的,它更关注的是专和精,要求行业深度。

从这个角度出发,其实垂直搜索也可以叫做行业搜索。

垂直搜索引擎:垂直搜索引擎是垂直搜索一个具体实现实例。

垂直搜索引擎对网络数据采集具有明确的目的性,它只搜索并采集行业内数据。

垂直搜索引擎对采集到的数据要进行分析、整理,最后通过一定表现形式把数据提供给用户使用。

最常见的表现形式是通过WEB页面提供一个查询的界面,后台应用根据用户输入的关键字进行检索,并把检索结果通过WEB页面展现给用户。

垂直搜索包含三个搜索的概念在里面。

用户对数据的检索这是一个搜索概念;搜索引擎搜索行业网站是一个搜索概念;搜索引擎对行业网站内的行业数据搜索又是一个搜索的概念。

要做好一个垂直搜索引擎,需要对这三个搜索的概念以及它们之间的关系进行深入的理解。

在整个垂直搜索系统中,它们分别占据了不同环节的关键位置,侧重点各不相同,需要区别对待,但是从系统的角度看,又是需要它们相互协作才能完成整体的工作,这又要求把这三个搜索有机的结合起来。

用户搜索,用户搜索直接关系到用户体验。

用户体验是改进搜索引擎重要参考指标,同时也是检验搜索引擎成功失败的标志。

用户搜索的重点在于考虑提供给用户的搜索的方式是否简单快捷,搜索引擎对用户搜索的内容响应速度快慢,返回的搜索结果是否精确。

但是,这些的前提需要搜索引擎对行业网站的行业数据抓取全面来支撑。

搜索行业网站。

行业网站是垂直搜索引擎数据来源的主要对象,只有尽量多的搜索行业范围内的网站,才能获得更多的行业数据支撑用户搜索,让用户有更好的体验。

行业数据搜索。

只有充分、全面的行业数据,垂直搜索引擎才能体现出它的价值,才能更好的提供服务。

2.垂直搜索引擎开发房产行业应用
2.1系统目标
快速构建一个房产行业的垂直搜索引擎,能够以较强的时效性对房产类的信息进行提取、分类,需要对采集到的数据进行格式转换。

用户可以在WEB前台通过文
字或者在地图上指定一定范围搜索房源信息,房源信息查询结果可以通过文字、地图的形式展现。

2.2垂直搜索引擎的选型
考虑研发成本和软件研发进度,采用模板方式实现网页数据抽取。

使用 2005作为软件开发工具。

MS SQLSERVER 2000作为数据库服务器。

.作为检索的索引工具。

使用的地图接口实现地图功能。

2.3系统架构
搜索引擎工作的时候IO吞吐量大,处理数据的时候有大量的字符串操作,对CPU和内存的要求高。

如果索引数据库和搜索引擎采集系统都在一个服务器上,搜索引擎采集、抽取数据时,势必会影响索引数据库的工作效率,特别是会影响终端用户检索房源的效率,带来不好的用户体验。

用分布式的结构能够较好的解决这个问题,把系统的各个模块按照功能的不同分别发布在不同的应用服务器上,均衡系统负载。

系统结构如图:
1.系统结构图
其中WEB前台和索引模块发布在同一台服务器,采集模块和数据库系统发布在同一台服务器。

采集模块和索引模块通过数据库系统完成数据交互,采集系统把抽取完成的数据保存到数据库中,索引模块从数据库中提取关键字段建立索引数据库。

用户通过WEB前台进行数据检索的时候首先通过索引模块在索引数据库中搜索,当用户需要详细信息的时候再从数据库提取具体数据。

2.4 数据采集
使用C#的HttpWebRequest、HttpWebResponse类,可以方便的实现WEB页面的采集,同时可以使用多线程技术提高采集效率。

数据采集需要注意以下问题:
2.4.1 公共数据的访问控制
数据采集需要注意多线程之间公共数据互斥访问,特别是对于要进行数据采集的URL,如果没有控制好线程间的URL列表读取,造成多个线程处理相同URL的情况,即增加了对方网站系统的负担,又增加自身的系统开销。

对于公共代码段的访问,可以使用Mutex类进行互斥控制。

2.4.2 采集网站的负载均衡
采集不同网站的访问速度是不一样的,目标网站的网站系统、网络质量、网络服务提供商以及我们自身的网络质量、网络服务提供商等等都有可能影响到采集的速度。

为避免因为某个网站的访问速度慢而影响到系统的运行效率,可以根据采集日志记录或者人工测试的方式确定访问速度慢的网站,并且给这些页面设置较低的采集权重,只有在系统空闲的时候才对这些页面进行采集,也可以专门设置一个采集线程处理这类访问效率低下的网站。

如果有采集多个城市的房源信息,需要对采集线程池里面的线程进行调控,保证在正常情况下,采集线程不会集中采集某个地市的房源信息,而是均匀的分布在不同的地市房源网站上进行采集工作,采集不同地市的数据,达到每个地市的数据都能得到及时的更新的目的。

解决这个问题的一个比较简单的方法就是按照城市为单位对采集任务进行分组。

首先从整体上根据采集服务器的软硬件配置情况设置线程池的大小,然后根据城市的重要性(比如一线城市、二线城市等等),每个城市需要采集的网站的多寡,把线程池里面的线程分配到每个采集组的配置文件中,采集系统根据配置文件中的线程个数控制每个城市的采集线程数目。

2.4.3 控制采集的范围
对于一个网站,每天更新的房源数量是有限的。

一般来说,当我们对网站对一个网站进行全量采集后,每天只需要对网站更新的房源进行增量采集。

大部分网站,要实现增量采集,只需要采集其房源列表的前N页(N的取值根据不同网站的更新频率设定)就可以。

2.4.4 URL编码
如果被采集页面的URL包含中文字符,或者是RFC1738里面规定的不安全字符,很可能对方网站的Web服务器不能解析,所以需要对URL进行编码,把中文字或特殊字符编码成%XXX的格式,在C#中可以使用
System.Web.HttpUtility.UrlPathEncode这个方法完成URL编码工作。

2.4.5 保存快照页面的
如果系统存储空间允许的话,可以把采集到的网页保存成文件存储在硬盘中,作为网页快照使用。