文档库 最新最全的文档下载
当前位置:文档库 › 票价搜索系统设计

票价搜索系统设计

本栏目责任编辑:王力

电子商务与电子政务

票价搜索系统设计

陈丹

(广东司法警官职业学院信息管理系,广州510520)

摘要:随着互联网的普及,以及航空机票电子化的全面推行,人们更倾向于在网上预订机票和选择旅游产品。目前,能够

提供强大票价搜索引擎的公司基本上是外国的航空公司票价搜索提供商,他们不为航空公司提供本地票价搜索引擎,而是要求各航空公司,通过互联网或专线,先把所有的票价发布到票价提供商的主机上,然后才能进行票价搜索,并且按查询次数向航空公司收取费用,这种做法非常不利于各航空公司建立自己的本地票价库,从而无法进行相应的数据分析。因此,国内各航空公司想要发展,提高销售额,必须拥有自己的票价搜索系统。现阶段,开发一个适合国内航空公司的本地票价搜索引擎势在必行,这样才能帮助航空公司打造一流的网上销售平台,保障网上销售渠道的畅通,提升竞争力。关键词:票价搜索;引擎;ATPCO 规则中图分类号:TP311

文献标识码:A

文章编号:1009-3044(2016)29-0260-03

1项目背景

随着互联网的普及、航空机票电子化的全面推行,人们出行不再需要亲自到机票销售点去预订机票,而是选择使用计算机或者手机通过互联网,进入航空公司或者其他销售机票的网站上预订机票。

近年来,各航空公司除了提供网上订票、出票及网上值机的服务外,还提供了诸如酒店住宿、租车等旅行产品服务,且这些产品的销售量逐年增高。随着航空公司网络销售业务的高速发展,其票价搜索的速度严重制约了机票及其相关旅游产品的销售业绩。因此,对于航空公司来讲,拥有强大的票价搜索引擎,提供丰富多样的旅行产品已经成为航空公司迫在眉睫的问题所在。

目前,能够提供强大票价搜索引擎的公司有:ATPCO (Air?line Tariff Publishing Company )、SITA (Societe International De Telecommun-ications )、TRAVELPORT 等公司,国内除南航引进SITA 第一代搜索引擎以外尚无其他航空公司拥有自己的搜索引擎,只有少数公司通过合作方式接入SITA AIRFARE 进行运价计算和查询。因此,拥有自己强大的票价搜索引擎是提高销售业务,进而提高其核心竞争力的关键所在。

纵观全球,许多国外航空公司票价搜索提供商并不为航空公司提供本地票价搜索引擎,所有的查询都必须经过互联网或专线,首先将所有票价发布到票价提供商的主机上,然后才能进行票价搜索,查询按次数来收费,这样不仅增加了航空公司销售的成本,且非常不利于各航空公司建立自己的本地票价库,从而无法对竞争对手和市场进行票价数据分析。

国内有航空公司引进的第一代票价搜索引擎,能够进行单程、往返、缺口程以及中转联程和ADDON 的基本票价搜索,但由于技术上的限制,该搜索引擎不是按照ATPCO (Airline Tariff Publishing Company )国际运价规则标准开发的,因此不能完全支持ATPCO1-50项的规则,即不能进行完全意义上的票价搜

索,同时也不能满足各航空公司日益增长的网上销售量和查询

量。

鉴于以上原因,开发一个适合国内航空公司的本地票价搜索引擎势在必行。只有拥有自主知识产权的票价搜索引擎,建立航空公司自身完整的本地票价数据库,才能帮助航空公司打造一流的网上销售平台,保障网上销售渠道的畅通,

提升竞争力,使之能跻身于世界一流的航空公司之列。

2系统总体结构

为了提供一个能支持ATPCO 行业标准的搜索引擎算法,系统采用负荷平衡策略支持多个用户同时在线搜索,并根据用户所提供的搜索字段对数据库中保存的所有票价信息进行搜索,并尽可能在短时间内将搜索结果返回给用户。

此外,为了能够适应ATPCO 每年修订的新标准,本系统还应具有良好的可扩展性。

本系统的结构如图:

图1系统结构图

收稿日期:2016-08-25作者简介:陈丹(1978—),女,海南海口人,广东司法警官职业学院,讲师,硕士,研究方向为计算机软件工程。

260

DOI:10.14004/https://www.wendangku.net/doc/089235113.html,ki.ckt.2016.3839

本栏目责任编辑:王力Computer Knowledge and Technology电脑知识与技术

第12卷第29期(2016年10月)

系统原理:终端用户提交的搜索请求经由负载均衡调度机到达各个从数据库服务器进行处理。在这些从数据库服务器上部署搜索引擎的业务逻辑,通过Oracle TimesTen In-memory

Database所提供的备份、热交换及数据恢复等功能,实现从数据服务器之间的相互冗余备份。另外,Oracle TimesTen In-memory Database还能提供数据复制功能,主数据库可以实时地对各个从数据库进行数据的更新,以保持数据的同步和一致性。

3系统主要功能及函数设置

本系统的功能包括:舱位信息的输入和修改,客机信息的输入、修改和查询,航线信息的输入、修改和查询,订票信息的输入、查询和修改等。

用户登录该系统后,可以通过查询,选择机票或其他旅游产品,下单并完成支付,系统根据支付记录给用户指定的手机号码发送电子凭证,用户可根据电子凭证到相应的服务点领取所定制的产品服务。

本系统设置的票价搜索引擎函数及函数的功能包括:1)getMatching函数

功能:返回符合搜索条件的一系列票价。

输入:起飞地、目的地、起飞日期、航程类型(S、R)、CUG、成人数、儿童数、婴儿数

在这个getMatching函数中还需注意设置以下参数:a.如果儿童数大于0,则票价必须含有儿童票价才会返回。婴儿数同理。其它函数同样适用。

b.如果成人数是0,返回的票价不按成人票价从小到大排序。如果成人数是0,儿童数是1,返回的票价按儿童票价从小到大排序。

c.如果标签是T,此票价不能使用于订票。系统默认是不返回标签是T的票价,如果在请求时加上A时,则会返回这种票价。

d.要使用某一票价,必须从返回结果匹配其使用条件。2)getSelectedFare函数

功能:返回符合条件的唯一票价,适合用于做票价确认。

输入:fare reference(一般由前一次查询产生),与getInfo相同。

3)faresForAvailability函数

功能:返回符合搜索条件的所有票价。

输入:起飞地、目的地、起飞日期、航程类型(S、R)、CUG、成人数、儿童数、婴儿数、舱位、航班号、缺口程需加上返程起飞地、返程目的地。faresForAvailability函数中需要特别留意的地方有以下三点:

a.查询往返程、缺口程票价时,舱位必须前后一致。

b.当查询往返程票价时,返回的是往返程的合计票价,而getFaresForItinerary函数分别返回每个航段的票价(单程、半往返程)。

c.请求时F返回适合条件的最后录入(fare number最大)的票价,T或缺省此标签时,返回所有票价。如果要查询多个舱位的最低票价,请用T,取其最前面的匹配票价。

4)getInfo函数

功能:返回额外的票价信息,如使用条件、提供的特殊服务等。

输入:fare reference(一般由前一次查询产生),与getSelect?edFare所得的结果相同。

5)getFaresForItinerary函数

功能:返回复杂航线的各个航段单程和(或)半往返程票价(同时存在out和in航段请求时才返回半往返程票价)。

输入:与faresForAvailability类似。

使用getFaresForItinerary函数时,须特别留意以下几点:

a.各航段可以是不同舱位的组合。

b.可组合一个Addon、Main fare、一个Onwards航段(加上返程)。

c.同一方向的Main fare可以是一个航段、有多个经停点的航段,但不允许是二个或以上独立航段,否则会显示没有票价返回。

d.如果第一个请求航段不是Addon,且与第二个同向的航段没有经停票价,将没有票价返回。

e.经停点可以像faresForAvailability一样用格式,也可以作为二个同向的航段输入。

4本系统采用的关键技术

衡量一个票价搜索引擎系统性能的标准是:能否提供丰富多彩的产品服务,能否在查询订单之后快速响应。为了达到这两个目标,本系统采用了以下关键技术来保证系统性能。

1)Oracle TimesTen In-memory Database

通过采用高性能的内存数据库,使系统在查询票价时可以达到最快捷的响应速度,由于这些票价数据都是存放于数据库服务器的内存中,而且业务逻辑也部署于同一台服务器(引擎服务器)上,因此能够最大限度地减少网络带宽所带来的性能影响以及提供系统的稳定性。另外,系统可同时部署若干引擎服务器,为保证数据的一致性,采用主从结构的形式,由主数据库实时地将所有的数据变化同步到从内存数据库中,这样,即使其中某些节点出现问题,也不会影响整个系统的正常工作。

2)基于IP和基于内容请求分发的负载平衡调度

系统前端配置一个前置调度机,从网络传送过来的搜索请求数据会经由此前置机被分发到各个引擎服务器上。

系统将来自不同IP的请求采用如哈希算法计算出一组目标引擎服务器,然后将来自这些IP地址的请求转发到该组服务器上。确定服务器的范围以后,请求的内容也经过一定的算法分析,然后计算出某特定的目标服务器,最后将该请求发送到相应的服务器上。这样做的目的是使某特定的引擎服务器可以专门负责某类型的搜索请求,从而可以极大地提高搜索速度。数据库系统的特点决定了近似的搜索能得到更快的响应速度。

由于这些引擎服务器上都部署有相同的业务逻辑,所以理论上这些服务器能实现的搜索功能都是一致的。于是,如果某一时间某类型的请求过多,而处理该类请求的服务器负荷较重,则可以将其他较为空闲的服务器配置为可处理该类请求。

3)其他提高搜索速度的方法

一般情况下,从数据库中搜索得到的票价信息并不是用户所要求的信息,还需要对其作进一步的过滤。这部分的过滤功能可以通过自行实现相应的算法去查找和计算这些中间结果集,得到最终的结果并返回给用户,或者根据这些计算结果再

261

电子商务与电子政务

本栏目责任编辑:王力

电子商务与电子政务

Computer Knowledge and Technology 电脑知识与技术第12卷第29期(2016年10月)

次对数据库进行查找,从而得到更准确的结果集。这部分算法的实现应与业务需求紧密联系。

4)使用Search Oriented Architecture 面向搜索的架构

面向搜索引擎的架构设计主要在业务层和数据层之间添加一个搜索层,该层的作用在于将业务系统和数据库系统的关联性减到最小,从而大大提高系统的可扩展性。从工作流程的角度上看,业务层首先向搜索层提出搜索的请求,数据搜索的任务是在搜索层里完成。由于将搜索功能单独提取出来作为一层,搜索的数据对象将不仅限于数据库系统中存放的数据,还可以是网页,文件系统中存放的文件等等。在本系统里面,可以先实现对数据库的搜索功能。

5)使用Service Oriented Architecture 面向服务的架构

面向服务的架构主要是对现有的代码重用想法的改进。现有的代码重用通常基于针对某特定功能实现的函数或基于面向对象技术的类的重用。这些方法的缺点是功能过于分散和微小,即使重用代码也需要花非常多时间实现新的业务应用和进行测试。面向服务的架构设计方法的原则是尽量将系统中的各个功能(一般为系统提供的各种服务)最大限度地分割开来,从而减少针对这部分功能所需设计的功能接口。每个服务或功能点间需要确定一组通信的协议,并且相互关联程度尽量减到最低。最理想的情况下各服务之间只需要知道其他服务是否存在并正常运行。这种架构可以降低各个服务或功能点之间的耦合程度,提高代码重用效率,也大大加快了扩展业务功能的速度,因为在许多情况下系统工程师只需要将系统现有的服务重新组合就可以实现新的业务功能。

对本系统来说,票价搜索是系统的核心功能,在将来可能的应用中,票价的搜索可能会被用于网上购票系统,机场信息部门查询系统,业务分析系统,客户关系管理系统等等,于是在设计的初步阶段将票价搜索实现成一个面向服务的架构将会对以后的业务应用有非常大的帮助

5系统的重要性能分析

响应时间:对于票价搜索引擎来讲,准确性和及时性是其所要具备的首要性能。票价搜索结果在日常处理中的响应速

度为秒级,因此,在系统是设计和开发的过程中,充分考虑了诸如获取数据库连接的时间、执行查询语句的时间、将结果发回数据库客户端的时间等因素,细心挑选合适的算法,尽可能缩短搜索的响应时间。

系统的延展性:由于ATPCO 行业标准在未来有可能会有所调整,因此,在本系统中,还考虑了系统的延展性,使其能根据行业标准的变化来适时调整。此外,本系统还考虑到随着用户和服务的增加,预留了性能扩充的位置。

主从数据库:系统采用了主数据库服务器和从数据库服务器的结构,这种结构除了能提高搜索的响应速度外,还能提供更多的保障:在主数据库服务器发生故障的情况下,系统会从其他从数据库服务器中挑选一个出来暂时代替主数据库服务器的位置,从而保证了系统的整体功能不受影响。

6总结

文章通过项目背景,阐述了开发一个适合国内各航空公司使用的票价搜索引擎的迫切性,从系统的总体结构、系统的主要功能和相应函数设置、系统采用的关键技术和系统的重要性能分析五个方面,详细介绍了本票价搜索引擎系统的全貌。

参考文献:

[1]李晓明,闫宏飞,王继民.搜索引擎:原理技术与系统[M].北京:科学出版社,2005.

[2]Ian H Witter,Alistair Moffat,Timothy C Bell .深入搜索引擎[M].北京:电子工业出版社,2009.

[3]王学松.Lucene+nutch 搜索引擎开发[M].北京:人民邮电出版社,2008.

[4]邱哲,符滔滔.开发自己的搜索引擎:Lucene 2.0+Heritrix[M].北京:人民邮电出版社,2007.

[5]胡奇峰.SEO 搜索引擎从入门到精通[M].广州:广东经济出版社有限公司,2015.

[6]昝辉,Zac.SEO 实战密码—60天网站流量提高20倍[M].3版.北京:电子工业出版社,2015.

262

相关文档
相关文档 最新文档