本书分Ajax和Lucene两部分,共16章,内容涵盖了JavaScript的基础、层叠样式表CSS、DOM与JavaScript、AjaX工作流程、Ajax实例、Ajax的安全问题与性能测试、Lucene基础、用Lucene来建立索引、Lucene搜索、Lucene的分析器、高级搜索技巧、Lucene性能测试、Lucene的中文问题以及Lucene的工具箱SandBox。\r\n 本书最大的特点在于“理论结合实践”,既简明扼要地讲解了理论知识,又提供了丰富的示例程序,力求使读者在掌握了理论知识的同时能够通过阅读示例代码加深理解。\r\n 本书适合于有一定Web开发基础的Java程序员和对Ajax与Lucene感兴趣的开发人员。
第1章 来点Ajax的感觉\r\n 1.1 两个例子\r\n 1.1.1 百度地图\r\n 1.1.2 Google Sugest\r\n 1.1.3 体会Ajax\r\n 1.2 一个传统的Web注册程序\r\n 1.2.1 运行效果预览\r\n 1.2.2 注册Servlet的代码\r\n 1.2.3 相关JSP页面代码\r\n 1.3 使用Ajax实现的Web注册程序--DynaCheckRegister\r\n 1.3.1 运行效果预览\r\n 1.3.2 注册Servlet的代码 \r\n 1.3.3 相关JSP页面代码\r\n 1.4 两种技术的比较\r\n 1.4.1 效果\r\n 1.4.2 涉及到的知识\r\n 1.5 总结\r\n第2章 JavaScript基础\r\n 2.1 浏览器对象模型\r\n 2.1.1 查看浏览器信息--Navigator对象\r\n 2.1.2 分割浏览器窗口--Frame对象\r\n 2.1.3 访问加载在窗口中的文档的URL--location对象\r\n 2.1.4 查看访问过的网址列表--history对象\r\n 2.1.5 取得计算机的各种显示特性--screen对象\r\n 2.2 函数\r\n 2.3 与用户交互的基本方法\r\n 2.3.1 提示对话框--alerto方法\r\n 2.3.2 确认信息对话框--confirmo方法\r\n 2.3.3 响应用户输入对话框--prompto方法\r\n 2.4 事件响应与编程\r\n 2.4.1 响应呼标事件\r\n 2.4.2 响应键盘事件\r\n 2.4.3 控制事件-对象\r\n 2.5 JavaScript核心对象\r\n 2.5.1 数组对象\r\n 2.5.2 Math对象\r\n 2.5.3 String对象\r\n 2.6 面向对象的JavaScript\r\n 2.6.1 JavaScript中的对象\r\n 2.6.2 使用JSON创建数组和对象图\r\n 2.6.3 构造函数\r\n 2.6.4 使属性和函数可以关联到对象--prototype\r\n 2.6.5 JavaScript对象反射\r\n 2.6.6 方法和函数\r\n 2.6.7 Ajax的事件处理和函数环境\r\n 2.7 胖客户端(Rich Client)\r\n 2.7.1 什么是胖客户端\r\n 2.7.2 Ajax解决的问题\r\n 2.8 总结\r\n第3章 层叠样式表CSS\r\n 3.1 使用CSS的原因\r\n 3.1.1 样式与内空的分离\r\n 3.1.2 可读性\r\n 3.1.3 一次性写入\r\n 3.1.4 CSS的版本与浏览器的兼容性\r\n 3.2 CSS基础\r\n 3.2.1 样式表的基础\r\n 3.2.2 内部样式表\r\n 3.2.3 外部样式表\r\n 3.2.4 创建和使用样式类\r\n ……\r\n第4章 DOM与JavaScript\r\n第5章 Ajax工作流程\r\n第6章 Ajax实例\r\n第7章 Ajax的安全问题\r\n第8章 Lucene基础\r\n第9章 第一个“搜索引擎”\r\n第10章 用Lucene来建立索引\r\n第11章 Lucene搜索\r\n第12章 Lucene的分析器\r\n第13章 高级搜索技巧\r\n第14章 性能测试\r\n第15章 搜索引擎的中文问题\r\n第16章 Lucene SandBox
关于Ajax
到底什么是Ajax?首先来看看图1所示的页面效果(网址是http://projects. backbase.com/RUI/shop.html)。这是一个购物网站的界面,界面左边是各种商品,右边是一个购物车的列表。
图1
当用户选中某种商品,可使用鼠标光标拖动方式将其添加入右边的购物车中,如图2所示。
图2
拖动完毕后,商品已经被加入了购物车的列表中,如图3所示。
图3
下面再举一个Google的例子,打开Google Map网站http://maps.google.com/,如图4所示,用户可以在上面随意拖动地图,可以看到地图立刻被刷新,而不需要长时间的等待,这在以前的网站中是不可想象的。
图4
打开Google Suggest网站http://www.google.com/ webhp?complete=1&hl=en,用户输入一个关键字,输入框下就会提示出相应的建议信息。这建议信息是从Google的庞大数据库中读出来的,使用十分方便(注:Google Suggest效果将会在本书的第6章给出实现方法)。
上面列举的网页响应速度更快、可以实现拖动等桌面应用程序的效果。普通的网页对任何提交请求,都要等待服务器的响应,然后网页才有所动作。也就是说,采用Ajax技术的网页具有了和Windows桌面很类似的功能,操作更加人性化,极大地提高了用户的体验。
如今随着Web 2.0概念的普及,追求更美观更人性化的页面效果成了网站开发的重中之重。Ajax这项技术正在其中充当着重要的角色。
关于Lucene
如今的互联网上信息量非常庞大,想要在网上获取一些有用的信息相当困难,没有搜索引擎的帮助,用户往往不知所措。
搜索引擎是一个特殊的技术行业,它的技术门槛比较高,如果完全自主研发,一个公司可能要经过几年时间的开发和完善才能建立起一套自己的搜索引擎软件,且不论这种软件的性能可靠性等技术参数,单是漫长的研发时间就会使很多商机从手中溜走。这对一些新兴的靠市场动向盈利的小公司来说是致命性的。另外,这种自主研发的软件如果没有经过严格的用户测试,就盲目投放市场,它的性能参数往往不能达到并发性需要。
在很多商业型项目中都需要有搜索的功能,目前大都使用数据库的SQL语言实现搜索。然而,当遇到全文检索时(例如对一个公司5年来所有报表数据和会议记录的搜索),数据库搜索的速度和性能就无法满足需求了。在这种情况下,很多项目都选择构买Google等公司的搜索服务,这种方式不但昂贵,而且有可能泄露公司机密。
在笔者所接触的项目中,只要是与全文检索有关的,除了使用数据库自带的索引功能外,其余都是使用Lucene来进行开发的。
Lucene是Apache开源软件联盟贡献的一个开源全文检索工具包。通过它,我们可以很方便地构建起搜索引擎,这就消除了费用昂贵和容易泄露机密的问题。它完全由Java编写,一次编译,随处运行。它的性能和可用性已经在全世界范围内得到了认可。
在Google上搜索“Lucene”这个关键字,在2005年12月17日晚8点左右可以找到112万个结果。而在2006年3月21日早8点进行搜索,已经可以找到739万个结果,可见其发展之快。Eclipse就是使用Lucene作为其内建的搜索工具,IBM的网站也正是用Lucene来构建的它站内检索工具的。
关于本书
本书由浅入深讲解理论知识,同时又配以很多示例代码。
Ajax是一种应用于Web编程的技术,而Lucene本身是用Java语言编写完成的,因此本书最适合有一定Web开发和Java编程基础的人。如果读者对Web编程技术和Java编程技术不是十分清楚,建议先阅读相关资料,然后再来学习本书。
同时,Java语言是一种面向对象的程序语言,所以读者最好具有一定的面向对象编程的理论基础。
本书分为两大部分共16章。
第1部分为Ajax的相关知识,共分7章。这部分内容包括Ajax入门体验、JavaScript关键技术、CSS表示技术、DOM技术、XmlHttpRequest对象和Ajax的工作流程、经典实例以及页面编程中的性能和安全性问题等内容,这部分内容旨在帮助读者快速掌握Ajax技术。
第2部分为Lucene的相关知识,共分9章。这9章的内容包括Lucene基本概念、入门实例、建立索引、通过索引来搜索文件、使用分析器、高级搜索技巧、性能测试、中文问题,以及Lucene中的一些实用工具。
本书特色
(1)实例丰富。本书包括了大量的代码片断,并都进行了详细的注释。在第1部分中,专门用一章来讲解完整的Ajax范例,以便帮助读者更好地理解相关技术的综合运用。另外,在第2部分中,每一章都给出了大量的例子来对API的使用进行演示;同时,在“性能测试”一章中也专门给出一个有关建立索引的较为完整的工具,以便于读者进行学习和参考。
(2)引导式学习。本书的各个章节都是从零开始讲起,然后不断地扩展需求,提出新的问题,然后讲解问题的解决方法。
(3)程序员本色。由于作者本身就是一线开发人员,因此最了解程序员的需求。
(4)及时跟进最新动态。Ajax与Lucene的发展迅猛,我们将及时跟踪它们的最新动向,请读者随时关注我们的Blog。读者可以直接同我们交流。同时,一些在本书光盘中并未选录的资料也将被放置在我们的Blog中,地址是http://blog.sina.com.cn/u/1197616372,读者可以方便获取到。
注意
• 在本书即将完成之际,Lucene的网站http://lucene.apache.org发布了其最新版本1.9。而本书所有的实例均使用其上一个版本1.4.3,建议读者学习时使用1.4.3版本。
• 本书中所有的代码标号仅是为正文中引用方便,配套光盘中的代码均按章节存储在相应的目录下。
作者
2006年4月
无封面