论文部分内容阅读
【摘要】 本文提出采用Heritrix和Sphinx技术搭建购物搜索引擎,将国内大型B2C网站作为爬取信息来源,运用聚焦爬虫技术将目标定为抓取与用户某一特定体验主题内容相关的网页搜索引擎模型的探索与研究。
【关键词】 比较购物 搜索引擎 Heritrix
随着网络商品的极大丰富和分类的细化,搜索引擎已成为购物信息的重要来源。比较购物搜索引擎是一种基于专业化的垂直搜索引擎,通过对电子商务网站或者部分实体店的商品信息进行采集和整理,向消费者提供特定准确的商品信息及相关辅助设施,减少信息不对称,优化购买决策;同时,帮助商家降低推广成本获得针对性极高的目标用户,是未来网络购物搜索的发展趋势。然而,目前国内的比较购物引擎普遍追求“大而全”,在细化用户需求和购物体验上较为欠缺。商品信息比较偏重价格方面,对影响购物体验的其他因素,诸如商家信誉、折扣降价、用户评价、退换条款等较少涉及。本文提出采用Heritrix和Sphinx技术搭建购物搜索引擎,将国内大型B2C网站作为爬取信息来源,运用聚焦爬虫技术将目标定为抓取与用户某一特定体验主题内容相关的网页,以期更好的细分消费者人群,有针对性地满足用户体验。
一、Heritrix和Sphinx技术特点
1.1 Heritrix工作原理
Heritrix是一款基于java 语言开发的开源网络爬虫,用于对网上的资源进行归档,建立网络数字图书馆,目前已经建立了400TB的数据。
Heritrix爬虫每次只对一张网页的内容深度复制,包括获取图像以及其它非文本内容,抓取并存储相关的内容。具体筛爬过程中,爬虫先从队列中取出下一个URL,通过HTTP协议将对应的网页爬取下来,然后解析内容,并且提取出包含的URL,将其中新发现的URL追加到队列中。最后将网页存放到本地磁盘的网页库中。爬取过程在积累到一定数量网页时即可终止,或者在队列为空的时候终止。
1.2 Sphinx工作原理
Sphinx是一个基于SQL的全文检索引擎,本系统所采用的是基于Sphinx研发并独立发布的Coreseek,是一款专攻中文搜索和信息处理的中文全文检索/搜索软件,它适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。Sphinx(Coreseek)整个系统主要由索引建立和维护程序(索引程序indexer)、查询服务程序(后台服务程序searchd) 、辅助工具程序(search, spelldump等)三大部分组成。
二、比较购物搜索引擎系统构建
2.1系统架构
系统整体架构由四部分组成:1)由Heritrix扩展而来的爬虫系统,负责从互联网抓取商品相关的信息。2)MySQL数据库,存储由Heritrix抓取的数据。3)Sphinx全文索引服务器,负责对商品建立全文索引。4)Tomcat服务器,负责向客户端提供搜索服务。具体系统整体架构图如图1。
在初始化阶段,Heritrix任务需事先通过配置和测试,确认后可由Linux系统通过Cron来自动调度。根据用户输入的商品信息,网络爬虫的每个抓取任务只负责单个购物网站数据的抓取,但每个任务的线程数量可由实际情况进行调整。筛爬启动和结束时间通过Bash脚本来监控,每隔一定的时间去检测相应的进程是否已经结束,如果某个抓取任务结束,则设定好下一次启动的时间间隔。在本文构建的模型中采用MySQL数据库存储筛爬的信息,但直接从MySQL数据库生成全文索引读取比较费时,因此采用基于SQL的全文检索引擎Sphinx结合MySQL,以“主索引+增量索引”的模式,大部分的搜索都集中在Sphinx全文索引中,少量数据可能需要直接访问MySQL数据库,这样可以使应用程序更容易实现专业化的全文检索。具体运行过程中通过Cron设定计划任务,每隔一定的时间,Sphinx会从MySQL数据库生成增量索引,然后执行主索引和增量索引的合并,并且在后台操作过程中,一直可以向客户提供搜索服务。
2.2数据存储模型的建立
目前各种购物平台和测评网站给出的商品信息异常复杂,每个网站的页面都有自身特定的格式,相同商品在不同网站上也不尽相同,尤其是不同类型的商品在属性上差异极大,因此, 需要建立统一的数据模型存储数据,也即通过多张表能够描述各种类型商品的基本属性,而不需要针对每种商品建立不同的存储表。本设计中构建了商品表、商品别名表、品牌表、信息采集表、信息采集元数据表、商品路径表、网站表、店铺表和商品类别表等一系列数据模型。以商品信息表为例,如表2-1所示。
表2-1 商品表(Commodity)
字段名 定义类型 特性 说明
id bigint unsigned 自增、主键 商品id
name varchar(255) 非空、全文索引 商品的名字
brand_id bigint unsigned 外键 品牌id
instance_id varchar(50) 非空 ISBN,ISRC,型号等
is_unique bool 非空 是否唯一
datetime datetime 非空 创建时间
instance_id可以是型号、货号、ISBN、ISRC等用来区分商品的编号。大部分商品都会有型号(instance_id),因此只要有相同品牌且型號相同,就可以肯定是同一种商品。brand_id指向brand,指品牌如TCL,也可指出版社或生产厂商。商品的名字需要用Sphinx建立全文索引。
2.3信息提取流程
通过设置起始网站,然后根据需要提取并更新网页上的商品信息,在信息提取过程中通过判别程序进行判定,对已存在商品添加商品别名,不存在的商品添加商品信息,最后更新店铺信息。 2.3.1商品信息提取判别
提取产品的信息包括商品名称、市场价、最高价、促销价、促销描述、销量描述、评价、URL、店铺、类别、属性,其中对ISBN或ISRC、品牌和型号属性要特殊处理,由于不同商家在添加商品信息时可能会有文字上的差异,提取时要结合Sphinx建立的全文搜索引擎仔细设计匹配规则。如果商品属性中有ISBN,则可以肯定是图书,如果有ISRC字样,则肯定为唱片。这两种编写都具有全球唯一性,因此可以设定商品表中的is_unique字段为真,判断时以此编号为准。
在没有全球唯一编号的情况下,大部分商品可通过“品牌+型号”的方式来判断是否为同一商品。其中型号可能有别名,如“货号”等。其余情况,以商品名字来判断,由于不同商家会往商品名称里加入很多其他信息,通过名字来判断同一商品可靠性较低。
2.3.2商品信息更新流程
商品信息更新分为店铺信息更新和类别更新两个部分。店铺更新是在商品添加成功以后来处理的,一般每个商品都会有默认Context(购物网站),个别商品可通过网页找到对应店家,此时就适用更新店铺流程,更新店铺最终是为了让此次采集时的上下文环境更加明确,以便将来对采集数据进行分类处理。类别更新针对部分能从商品信息页面中获取的网站而言,为可选功能。
三、模型构建实践
本文基于Heritrix和Sphinx技术搭建的购物搜索引擎在实践中把淘宝网、天猫网、卓越亚马逊、当当网作为重点爬取对象,能实现针对这些主要购物网一般商品的搜索。搜索结果页面如图2所示。商品比较结果页面如圖3所示。
四、总结
本系统通过Linux系统的脚本管理技术,将Heritrix网络爬虫技术、Sphinx的分词和全文索引的功能相结合,整合成一个能筛爬国内主流大型购物网站的比较购物搜索引擎。本系统还可以进一步进行完善,如可以对搜索关键字进行按照行为预先分类,帮助缺少计算机基础的用户搜索互联网内容,进一步修订商品信息数据存储表,以更好的兼容越来越多的业务细分类型购物网站,这些都是下一步的发展方向。
参 考 文 献
[1] Stefan Büttcher, Charles L.A.Clarke, Gordon V.Cormack. 信息检索:实现和评价搜索引擎[M]. 北京:机械工业出版社,2012.1.
[2] Heritrix User Guide. Heritrix User Guide. Internet Archive.
[3] 蒋群.中国比较购物网站的调查分析和发展建议[J].北京邮电大学学报(社会科学版),2007,(1)
[4]徐意能, 陈硕. 基于用户体验的搜索引擎有效性评估研究[J].人类工效学,2008, 14(3):9-12
【关键词】 比较购物 搜索引擎 Heritrix
随着网络商品的极大丰富和分类的细化,搜索引擎已成为购物信息的重要来源。比较购物搜索引擎是一种基于专业化的垂直搜索引擎,通过对电子商务网站或者部分实体店的商品信息进行采集和整理,向消费者提供特定准确的商品信息及相关辅助设施,减少信息不对称,优化购买决策;同时,帮助商家降低推广成本获得针对性极高的目标用户,是未来网络购物搜索的发展趋势。然而,目前国内的比较购物引擎普遍追求“大而全”,在细化用户需求和购物体验上较为欠缺。商品信息比较偏重价格方面,对影响购物体验的其他因素,诸如商家信誉、折扣降价、用户评价、退换条款等较少涉及。本文提出采用Heritrix和Sphinx技术搭建购物搜索引擎,将国内大型B2C网站作为爬取信息来源,运用聚焦爬虫技术将目标定为抓取与用户某一特定体验主题内容相关的网页,以期更好的细分消费者人群,有针对性地满足用户体验。
一、Heritrix和Sphinx技术特点
1.1 Heritrix工作原理
Heritrix是一款基于java 语言开发的开源网络爬虫,用于对网上的资源进行归档,建立网络数字图书馆,目前已经建立了400TB的数据。
Heritrix爬虫每次只对一张网页的内容深度复制,包括获取图像以及其它非文本内容,抓取并存储相关的内容。具体筛爬过程中,爬虫先从队列中取出下一个URL,通过HTTP协议将对应的网页爬取下来,然后解析内容,并且提取出包含的URL,将其中新发现的URL追加到队列中。最后将网页存放到本地磁盘的网页库中。爬取过程在积累到一定数量网页时即可终止,或者在队列为空的时候终止。
1.2 Sphinx工作原理
Sphinx是一个基于SQL的全文检索引擎,本系统所采用的是基于Sphinx研发并独立发布的Coreseek,是一款专攻中文搜索和信息处理的中文全文检索/搜索软件,它适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。Sphinx(Coreseek)整个系统主要由索引建立和维护程序(索引程序indexer)、查询服务程序(后台服务程序searchd) 、辅助工具程序(search, spelldump等)三大部分组成。
二、比较购物搜索引擎系统构建
2.1系统架构
系统整体架构由四部分组成:1)由Heritrix扩展而来的爬虫系统,负责从互联网抓取商品相关的信息。2)MySQL数据库,存储由Heritrix抓取的数据。3)Sphinx全文索引服务器,负责对商品建立全文索引。4)Tomcat服务器,负责向客户端提供搜索服务。具体系统整体架构图如图1。
在初始化阶段,Heritrix任务需事先通过配置和测试,确认后可由Linux系统通过Cron来自动调度。根据用户输入的商品信息,网络爬虫的每个抓取任务只负责单个购物网站数据的抓取,但每个任务的线程数量可由实际情况进行调整。筛爬启动和结束时间通过Bash脚本来监控,每隔一定的时间去检测相应的进程是否已经结束,如果某个抓取任务结束,则设定好下一次启动的时间间隔。在本文构建的模型中采用MySQL数据库存储筛爬的信息,但直接从MySQL数据库生成全文索引读取比较费时,因此采用基于SQL的全文检索引擎Sphinx结合MySQL,以“主索引+增量索引”的模式,大部分的搜索都集中在Sphinx全文索引中,少量数据可能需要直接访问MySQL数据库,这样可以使应用程序更容易实现专业化的全文检索。具体运行过程中通过Cron设定计划任务,每隔一定的时间,Sphinx会从MySQL数据库生成增量索引,然后执行主索引和增量索引的合并,并且在后台操作过程中,一直可以向客户提供搜索服务。
2.2数据存储模型的建立
目前各种购物平台和测评网站给出的商品信息异常复杂,每个网站的页面都有自身特定的格式,相同商品在不同网站上也不尽相同,尤其是不同类型的商品在属性上差异极大,因此, 需要建立统一的数据模型存储数据,也即通过多张表能够描述各种类型商品的基本属性,而不需要针对每种商品建立不同的存储表。本设计中构建了商品表、商品别名表、品牌表、信息采集表、信息采集元数据表、商品路径表、网站表、店铺表和商品类别表等一系列数据模型。以商品信息表为例,如表2-1所示。
表2-1 商品表(Commodity)
字段名 定义类型 特性 说明
id bigint unsigned 自增、主键 商品id
name varchar(255) 非空、全文索引 商品的名字
brand_id bigint unsigned 外键 品牌id
instance_id varchar(50) 非空 ISBN,ISRC,型号等
is_unique bool 非空 是否唯一
datetime datetime 非空 创建时间
instance_id可以是型号、货号、ISBN、ISRC等用来区分商品的编号。大部分商品都会有型号(instance_id),因此只要有相同品牌且型號相同,就可以肯定是同一种商品。brand_id指向brand,指品牌如TCL,也可指出版社或生产厂商。商品的名字需要用Sphinx建立全文索引。
2.3信息提取流程
通过设置起始网站,然后根据需要提取并更新网页上的商品信息,在信息提取过程中通过判别程序进行判定,对已存在商品添加商品别名,不存在的商品添加商品信息,最后更新店铺信息。 2.3.1商品信息提取判别
提取产品的信息包括商品名称、市场价、最高价、促销价、促销描述、销量描述、评价、URL、店铺、类别、属性,其中对ISBN或ISRC、品牌和型号属性要特殊处理,由于不同商家在添加商品信息时可能会有文字上的差异,提取时要结合Sphinx建立的全文搜索引擎仔细设计匹配规则。如果商品属性中有ISBN,则可以肯定是图书,如果有ISRC字样,则肯定为唱片。这两种编写都具有全球唯一性,因此可以设定商品表中的is_unique字段为真,判断时以此编号为准。
在没有全球唯一编号的情况下,大部分商品可通过“品牌+型号”的方式来判断是否为同一商品。其中型号可能有别名,如“货号”等。其余情况,以商品名字来判断,由于不同商家会往商品名称里加入很多其他信息,通过名字来判断同一商品可靠性较低。
2.3.2商品信息更新流程
商品信息更新分为店铺信息更新和类别更新两个部分。店铺更新是在商品添加成功以后来处理的,一般每个商品都会有默认Context(购物网站),个别商品可通过网页找到对应店家,此时就适用更新店铺流程,更新店铺最终是为了让此次采集时的上下文环境更加明确,以便将来对采集数据进行分类处理。类别更新针对部分能从商品信息页面中获取的网站而言,为可选功能。
三、模型构建实践
本文基于Heritrix和Sphinx技术搭建的购物搜索引擎在实践中把淘宝网、天猫网、卓越亚马逊、当当网作为重点爬取对象,能实现针对这些主要购物网一般商品的搜索。搜索结果页面如图2所示。商品比较结果页面如圖3所示。
四、总结
本系统通过Linux系统的脚本管理技术,将Heritrix网络爬虫技术、Sphinx的分词和全文索引的功能相结合,整合成一个能筛爬国内主流大型购物网站的比较购物搜索引擎。本系统还可以进一步进行完善,如可以对搜索关键字进行按照行为预先分类,帮助缺少计算机基础的用户搜索互联网内容,进一步修订商品信息数据存储表,以更好的兼容越来越多的业务细分类型购物网站,这些都是下一步的发展方向。
参 考 文 献
[1] Stefan Büttcher, Charles L.A.Clarke, Gordon V.Cormack. 信息检索:实现和评价搜索引擎[M]. 北京:机械工业出版社,2012.1.
[2] Heritrix User Guide. Heritrix User Guide. Internet Archive.
[3] 蒋群.中国比较购物网站的调查分析和发展建议[J].北京邮电大学学报(社会科学版),2007,(1)
[4]徐意能, 陈硕. 基于用户体验的搜索引擎有效性评估研究[J].人类工效学,2008, 14(3):9-12