欢迎来到天天文库
浏览记录
ID:11735017
大小:28.00 KB
页数:6页
时间:2018-07-13
《基于heritrix和sphinx的购物比较搜索引擎研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于Heritrix和Sphinx的购物比较搜索引擎研究 随着网络商品的极大丰富和分类的细化,搜索引擎已成为购物信息的重要来源。比较购物搜索引擎是一种基于专业化的垂直搜索引擎,通过对电子商务网站或者部分实体店的商品信息进行采集和整理,向消费者提供特定准确的商品信息及相关辅助设施,减少信息不对称,优化购买决策;同时,帮助商家降低推广成本获得针对性极高的目标用户,是未来网络购物搜索的发展趋势。然而,目前国内的比较购物引擎普遍追求“大而全”,在细化用户需求和购物体验上较为欠缺。商品信息比较偏重价格方面,对影响购物体验的其他因素,诸如商家信誉、折扣降价、用户评价、退换条款等较少涉及。本文
2、提出采用Heritrix和Sphinx技术搭建购物搜索引擎,将国内大型B2C网站作为爬取信息来源,运用聚焦爬虫技术将目标定为抓取与用户某一特定体验主题内容相关的网页,以期更好的细分消费者人群,有针对性地满足用户体验。 一、Heritrix和Sphinx技术特点 Heritrix工作原理 Heritrix是一款基于java语言开发的开源网络爬虫,用于对网上的资源进行归档,建立网络数字图书馆,目前已经建立了400TB的数据。 Heritrix爬虫每次只对一张网页的内容深度复制,包括获取图像以及其它非文本内容,抓取并存储相关的内容。具体筛爬过程中,爬虫先从队列中取出下一个URL,
3、通过HTTP协议将对应的网页爬取下来,然后解析内容,并且提取出包含的URL,将其中新发现的URL追加到队列中。最后将网页存放到本地磁盘的网页库中。爬取过程在积累到一定数量网页时即可终止,或者在队列为空的时候终止。 工作原理 Sphinx是一个基于SQL的全文检索引擎,本系统所采用的是基于Sphinx研发并独立发布的Coreseek,是一款专攻中文搜索和信息处理的中文全文检索/搜索软件,它适用于行业/垂直搜索、论坛/站内搜索、数据库搜索联盟、文档/文献检索、信息检索、数据挖掘等应用场景。Sphinx整个系统主要由索引建立和维护程序、查询服务程序、辅助工具程序三大部分组成。 二、
4、比较购物搜索引擎系统构建 系统架构 系统整体架构由四部分组成:1)由Heritrix扩展而来的爬虫系统,负责从互联网抓取商品相关的信息。2)MySQL数据库,存储由Heritrix抓取的数据。3)Sphinx全文索引服务器,负责对商品建立全文索引。4)Tomcat服务器,负责向客户端提供搜索服务。具体系统整体架构图如图1。 在初始化阶段,Heritrix任务需事先通过配置和测试,确认后可由Linux系统通过Cron来自动调度。根据用户输入的商品信息,网络爬虫的每个抓取任务只负责单个购物网站数据的抓取,但每个任务的线程数量可由实际情况进行调整。筛爬启动和结束时间通过Bash脚本
5、来监控,每隔一定的时间去检测相应的进程是否已经结束,如果某个抓取任务结束,则设定好下一次启动的时间间隔。在本文构建的模型中采用MySQL数据库存储筛爬的信息,但直接从MySQL数据库生成全文索引读取比较费时,因此采用基于SQL的全文检索引擎Sphinx结合MySQL,以“主索引+增量索引”的模式,大部分的搜索都集中在Sphinx全文索引中,少量数据可能需要直接访问MySQL数据库,这样可以使应用程序更容易实现专业化的全文检索。具体运行过程中通过Cron设定计划任务,每隔一定的时间,Sphinx会从MySQL数据库生成增量索引,然后执行主索引和增量索引的合并,并且在后台操作过程中,一
6、直可以向客户提供搜索服务。 数据存储模型的建立 目前各种购物平台和测评网站给出的商品信息异常复杂,每个网站的页面都有自身特定的格式,相同商品在不同网站上也不尽相同,尤其是不同类型的商品在属性上差异极大,因此,需要建立统一的数据模型存储数据,也即通过多张表能够描述各种类型商品的基本属性,而不需要针对每种商品建立不同的存储表。本设计中构建了商品表、商品别名表、品牌表、信息采集表、信息采集元数据表、商品路径表、网站表、店铺表和商品类别表等一系列数据模型。以商品信息表为例,如表2-1所示。 表2-1商品表 字段名定义类型特性说明 idbigintunsigned自增、主键商品id
7、 namevarchar非空、全文索引商品的名字 brand_idbigintunsigned外键品牌id instance_idvarchar非空ISBN,ISRC,型号等 is_uniquebool非空是否唯一 datetimedatetime非空创建时间 instance_id可以是型号、货号、ISBN、ISRC等用来区分商品的编号。大部分商品都会有型号,因此只要有相同品牌且型号相同,就可以肯定是同一种商品。brand_id指向brand,指品牌如T
此文档下载收益归作者所有