,例如一个完整行程的中转次数一般不会超过5次,对于任意超过5次中转的行程将不会被保留。
[0063]对于旅行方向的剪枝:在里程制运价规则中对旅行方向进行了规定,只有满足旅行方向的扩展点才被保留。即,对于出发地的扩展点集合,仅保留以出发地到扩展点为旅行方向的扩展点,对于目的地的扩展点集合,仅保留以扩展点到目的地为旅行方向的扩展点。
[0064]根据里程制运价规则的剪枝:在里程制运价规则中除了对里程进行限制之外,还对航班的属性进行了限制,例如可以限制整个航班不允许存在航班经停等。例如,可以限制初始节点与扩展点之间的航班不经停,或者限制初始节点与扩展点之间的航班经停次数不超过预设阈值(如I或2等)。
[0065]其中,里程制运价信息如距离、中转次数、旅行方向以及里程制运价规则可以从数据服务器中获取,所述数据服务器中包括航班信息的数据库、舱位状态信息的数据库、以及运价相关信息的数据库,里程制运价信息可以从运价相关信息数据库中获得。所谓运价就是定义了行程的价格以及应用该价格的一系列规则限制。里程制运价规则不限制航班行程的具体走法,而是规定了最大允许里程(MPM,Maximum Permitted Mileage),只有不超过该里程的行程才能应用该价格。里程制运价信息的应用既可以保证查询结果满足用户对价格敏感行程的需求,同时应用里程制规则限制可以很大程度上降低航线图搜索的复杂度,解决了航班行程搜索过程的效率低问题。
[0066]本发明实施例中,在搜索的过程中应用多因素混合约束策略高效的剪除可用度低的行程,高效的双向查找算法以及有效的剪枝策略,保证了航班行程的高可用度和搜索效率。
[0067]具体的,如图4所示,本发明实施例中得到两个扩展点集合:正向扩展点集合Gl{DEP_AIRP0RT}(出发地的扩展点集合)和反向扩展点集合G2{ARR_AIRP0RT}(目的地的扩展点集合),步骤403中比较两个扩展点集合的大小,即Gl是否小于等于G2,如果是,则执行步骤404-405,正向扩展生成集合Gl {CITYS},并根据里程制运价信息对Gl {CITY}剪枝,如果不是,则执行步骤406-407,反向扩展生成集合G2ICITYS},并根据里程制运价信息对G2 {CITY}剪枝。
[0068]这里,如果一个方向生成的扩展点集合已经很差(比如,初始节点到扩展点之间不存在直航或中转航班的经停点又超过了限制(3个或以上)等等)则可以删除。
[0069]如图4所示,步骤408为取交集,即将两个方向的扩展点集合Gl与G2取交集,如果存在交集,则根据两者交集生成出发地到目的地的行程集合;如果不存在交集,则重新执行本步骤,即重新扩展、剪枝、取交集,此过程中对于扩展的限制、剪枝的限制可以放宽。具体过程与上述描述类似,不再赘述。
[0070]具体的,取交集可以是比较两个扩展点集合,如果两个扩展点集合存在至少一个相同的扩展点,那么说明存在交集,通过将出发地到扩展点、扩展点到目的地的航班整合,生成出发地到目的地的行程集合。
[0071 ]步骤409-410:对行程集合进行删减,并对保留下来的行程进行评估排序;
[0072]具体的,对所述行程集合中已经得到的行程进行检查,检查的主要目的是对完整行程进行评估。
[0073]这里,对行程的检查主要包括:
[0074]首先,判断得到的行程是否可能是有效行程,将无效行程删除,删除过程与上述的“剪枝”过程相似,不再赘述;
[0075]其次,对保留下来的行程进行评估排序,即对每个行程进行评定和综合打分,保证行程集合的多样性和便捷性。首先保留各个极端最优的行程,比如价格最低、旅行时间最短、直飞航班;然后对所有保留行程进行综合打分,计算行程的分值并按照分值由高到低存储,删除综合打分低于分值阈值的行程。
[0076]具体的,评分策略如下:首先从航班查询更新服务器获取行程中所有航班的航班可利用状态,对航班可利用状态进行打分,记为Availability Score;计算行程的旅行时间及旅行时间的分值,记为TFT Score;根据行程的中转次数计算连接点数量的分值,记为Connect1n Score;根据行程中航空公司之间关系计算联盟分值,记为Alliance Score。如此,行程总的分值Total Score = Availability Score+TFT Score+Connect1n Score+Alliance Score。也就是说,行程分值为航班可利用状态分值、旅行时间分值、连接点数量分值、以及联盟分值之和。
[0077]检查之后,如果行程集合中的行程数量还没有达到结果阈值则需要返回步骤402进一步进行扩展。扩展的依据是如果进一步扩展后最优的航班行程的分值比已经得到的最差的航班行程的分值还低则不需要进一步扩展,否则需要进一步扩展。
[0078]步骤411:按照优先级将得到的行程插入到结果集合;
[0079]这里,优先级根据排序得到,排序越靠前则优先级越高。按照优先级将行程集合中的行程插入到结果集合中,最后航班查询服务器将结果集合作为搜索结果返回给客户端,客户端显示给用户,便于用户查看。
[0080]本发明实施例提供的航班查询方法,可以应用于航空公司系统以及基于互联网的航班搜索系统(Shopping)中用户对航班行程的查询需求,可以高效进行直飞和联程航班行程查询。
[0081]本发明实施例还提供了一种航班查询服务器,如图5所示,包括:构建模块51、双向搜索模块52和筛选评估模块53;其中,
[0082]构建模块51,用于构建航班网路图,所述航班网络图的一条边表示一个航班,边与边之间的连接点表示一个地点或一个机场;
[0083]双向搜索模块52,用于在所述航班网络图中基于用户行程请求进行双向搜索,得到行程集合;
[0084]筛选评估模块53,用于对所述双向搜索模块52得到的行程集合进行筛选评估。
[0085]具体地,所述双向搜索模块52可以包括:扩展子模块、剪枝子模块和交集子模块;其中,扩展子模块,用于分别以所述用户行程请求中的出发地和目的地为初始节点,从所述航班网络图的两边进行扩展,得到两个扩展点集合,所述扩展点集合中的扩展点为以所述出发地或目的地为初始节点的所有航班经过的地点;剪枝子模块,用于根据里程制运价信息,分别对所述扩展子模块得到的两个扩展点集合进行剪枝;交集子模块,用于取所述剪枝子模块剪枝后的两个扩展点集合的交集,生成出发地到目的地的行程集合。这里,所述里程制运价信息包括:距离限制、中转次数限制、旅行方向限制和/或航班属性限制。
[0086]具体地,所述筛选评估模块53可以用于将所述行程集合中的无效行程删除,并对保留下来的行程进行评估排序。这里,所述筛选评估模块进行评估,包括:根据行程中航班可利用状态、旅行时间、中转次数、行程中航空公司之间的联盟关系,对所述行程打分。
[0087]此外,本发明实施例还提供了一种航班查询系统,如图6所示为该系统的逻辑架构图,该系统包括:客户端61、数据服务器62以及上述的航班查询服务器63。实际应用中,航班查询服务器63主要为航班行程的搜索提供查询服务,多进程部署,每个进程可以独立完成整个业务处理请求。当有用户请求行程时,客户端生成用户行程请求并上报给航班查询服务器63,航班查询服务器63首先解