详述机票搜索的实现原理
相比于传统搜索,垂直搜索有其独到的优势,一方面是及时性,其次是信息组织的规整。
机票搜索的实现原理可以概括为:后台抓取+ 前端展示。
大家现看一个例子: http://jipiao.wendoo.com
。 下面就结合该机票搜索的实现方式详细谈一谈。
后台抓取
后台抓取分: 中央缓存器+crawler
crawler:从机票订票网站抓取数据。和传统crawler相比,它们更智能一些,也可以说更笨一些,因为不同网站的页面结构是不同的,而我们抓取回
来要分清楚哪些是航班信息,哪些是价格信息 等等。 所以这里的crawler是用模板配置的,针对一个订票网站写一个crawler。
而这里crawler要抓取的不是一个普通的页面,而是根据一定查询条件的表单提交,所以要一个个分析订票网的表单提交方式,然后模拟其表单提交进行查
询,从而抓到想要的结果。
中央缓存器:用来缓存抓取的机票数据。中央缓存器又分两种,一种是及时性缓存,存查询的航班的机票价格;另一种是持久性缓存,一般存一个月或一年的机票价格数据,用来统计机票价格趋势,做数据分析用。
鉴于机票价格搜索这种对时间要求非常高的应用,缓存策略至关重要。下面看一个例子回来再详说原理:
http://jipiao.wendoo.com/t?isback=false&from=%E5%8C%97%E4%BA%AC&to=%E5%B9%BF%E5%B7%9E&date=2008-10-11&backdate=
大家看到搜索页顶端显示正在搜索XXX订票网站,貌似是时时的去抓取价格,可做技术的人应该知道,如果时时抓取几十个订票网的成本太大了,一方面是自己的成本,为保证并发访问速度,需要非常多的抓取机器;另一方面是增大了目标网站的负载,多数会把你屏蔽掉的。 我们这里分析了机票价格变化的时间周期,采取了一定的缓存策略来解决这个问题,即保证了用户查到机票价格的准确性又保证了抓取负担最小化。以上面查询为例,假如第一次查询北京到广州该天的机票,这时crawler会老老实实一个一个抓取目标网站结果回来,如果一看缓存中已经有现成的数据了且没有过期,则直接返回结果。这个缓存策略可以做的足够灵活,比如不同航线的价格变化周期是不同的,用户需求量也是不同的(北京到广州的航班数量和价格变化和查询的次数都远远大于北京到成都的,所以根据这点不同可以制定更为合理的缓存策略。
到此为止说的是时时机票的缓存策略,令一部分是持久性缓存,主要做数据分析用的,比如预测航班价格趋势等等,这里不做详述了。
前端展示
待续
分享到:
相关推荐
### 基于垂直搜索的机票搜索系统设计与实现的关键知识点 #### 一、垂直搜索引擎概述 ##### 1.1 定义与特征 - **定义**:垂直搜索引擎(Vertical Search Engine)是一种针对特定领域或行业的专业搜索引擎。它不同于...
【基于PHP和MSSQL实现机票订购系统】是一种常见的Web应用程序开发实践,它结合了PHP作为后端服务器脚本语言和Microsoft SQL Server(MSSQL)作为数据库管理系统,以提供在线机票预订服务。以下是该系统涉及的主要...
以下将详细介绍这个系统的功能、实现原理和技术要点。 一、系统功能 1. 实时查询:系统的核心功能是实时查询航班信息,包括航班号、出发地、目的地、起飞时间、到达时间、票价等,用户可以随时获取最新航班动态。 2...
在开发一个模拟飞机票的买票和订票系统时,我们面临的核心任务是设计和实现一个高效、可靠的系统,能够处理航班查询、座位预订、支付处理以及机票打印等一系列功能。这个系统涉及到多个关键知识点,包括数据结构、...
### 语音搜索与语音对话系统原理详解 #### 一、语音搜索技术概述 语音搜索(Voice Search)是一项关键的技术,它支撑着许多语音对话系统(Spoken Dialog Systems, SDSs),使得用户能够通过口头询问来获取所需的信息。...
【机票预订系统源代码和文档】是一套完整的软件开发实例,涵盖了从项目规划到系统实现的全过程。这个压缩包包含了多个关键文档,旨在帮助学习者理解软件工程的实践过程,特别是针对在线预订系统的开发。 首先,概要...
例如,用户可以搜索航班、查看航班详情、预订机票等。这些功能的实现可能会涉及HTTP请求处理、数据库交互以及视图渲染。 在ASP.NET中,数据库交互通常通过ADO.NET或者Entity Framework完成。ADO.NET是微软提供的...
总结起来,"QTP订机票参数化测试代码"是一个利用QTP进行数据驱动测试的实例,其目的是通过外部数据源控制订票流程,实现对不同预订情况的自动化测试,以提升测试覆盖率和效率。这个过程涉及到了QTP的基本操作、数据...
本文将深入探讨该系统的实现原理及其涉及的关键技术。 首先,飞机票管理系统的核心是航班信息的增删改查功能。这一部分主要涉及到数据结构的设计和运用。在数据库中,航班信息通常以表格的形式存储,这需要利用到...
同时,该项目的实现有助于提升开发者的问题解决能力,因为机票预订涉及到用户交互、数据验证、支付接口等多个复杂环节。 其次,进行可行性分析是项目启动的关键步骤。在这个阶段,我们需要考虑技术可行性、经济可行...
1. **查询机票**:此功能允许用户根据出发地、目的地、出发日期和时间等条件搜索可用的航班。系统可能通过连接到一个模拟或真实的航空公司数据库来获取航班信息,如航班号、起飞和到达时间、价格等。查询结果通常会...
综上所述,机票预定系统的需求分析和详细分析涉及众多软件工程原理和技术,包括需求收集、系统设计、实现策略和测试策略。每个环节都至关重要,只有全面考虑并精心实施,才能打造出满足用户需求的高质量机票预定系统...
本文将深入探讨此系统的实现原理和技术栈,帮助读者了解如何利用C#和数据库技术来设计和开发高效、实用的应用。 首先,C#是一种面向对象的编程语言,由微软公司开发,广泛用于Windows平台上的应用程序开发。其语法...
下面将详细解析该系统的实现原理和技术要点。 首先,C#是一种面向对象的编程语言,由微软公司推出,广泛应用于Windows平台上的应用程序开发。在本项目中,C#作为主要的开发工具,利用其强大的类库和语法特性,构建...
5. **用户界面(UI)**:UI设计是机票预订系统的重要部分,它需要提供直观的界面,让用户能够方便地搜索航班、选择座位、输入乘客信息并完成支付。C#的Windows Forms或WPF框架可以用于创建这样的图形用户界面。 6. ...
3. **机票订购流程**:一个完整的机票订购系统通常包括搜索航班、选择座位、填写乘客信息、支付及确认订单等步骤。在VB中,这些功能可能通过不同的窗体(Form)和控件(如文本框、列表框、按钮等)实现,每个步骤都...
首先,从用户界面设计的角度来看,该源码可能包含了各种Android布局组件的使用,如LinearLayout、RelativeLayout和ConstraintLayout等,用于构建预订流程中的各个屏幕,如登录、搜索航班、选择座位和支付等页面。...
设计一个基于ASP的机票预订系统,需要实现以下功能: 1. 航班查询:用户可以通过输入出发地、目的地和日期来搜索可用航班。 2. 座位选择:展示航班座位图,允许用户选择心仪的座位。 3. 订票流程:用户填写个人信息...
通过分析这个源码,我们可以深入理解Android应用程序的设计原理、数据管理、网络通信以及用户界面设计等多个关键知识点。 1. **Android开发环境搭建**:首先,我们需要了解如何配置Android Studio,它是Google官方...
这个标题提示我们讨论的主题是一个机票预定系统,这通常涉及到一套软件解决方案,用于帮助用户在线搜索、预订、管理以及支付航空公司的机票。在IT行业中,这样的系统是电子商务和旅游行业的核心组成部分,它们需要与...