1.1 两个例子 1
1.1.1 百度地图 1
第1章 来点Ajax的感觉 1
1.1.2 Google Suggest 2
1.1.3 体会Ajax 3
1.2 一个传统的Web注册程序 5
1.2.1 运行效果预览 5
1.2.2 注册Servlet的代码 6
1.2.3 相关JSP页面代码 8
1.3.1 运行效果预览 10
1.3 使用Ajax实现的Web注册程序——DynaCheckRegister 10
1.3.2 注册Servlet的代码 11
1.3.3 相关JSP页面代码 13
1.4 两种技术的比较 16
1.4.1 效果 17
1.4.2 涉及到的知识 17
1.5 总结 17
第2章 JavaScript基础 18
2.1 浏览器对象模型 18
2.1.1 查看浏览器信息——Navigator对象 19
2.1.2 分割浏览器窗口——Frame对象 20
2.1.3 访问加载在窗口中的文档的URL——location对象 22
2.1.4 查看访问过的网址列表——history对象 23
2.1.5 取得计算机的各种显示特性——screen对象 25
2.2 函数 26
2.3 与用户交互的基本方法 30
2.3.1 提示对话框——alert()方法 30
2.3.2 确认信息对话框——confirm()方法 31
2.3.3 响应用户输入对话框——prompt()方法 32
2.4 事件响应与编程 33
2.4.1 响应鼠标事件 35
2.4.2 响应键盘事件 36
2.4.3 控制事件——event对象 36
2.5 JavaScript核心对象 39
2.5.1 数组对象 39
2.5.2 Math对象 41
2.5.3 String对象 42
2.6 面向对象的JavaScript 43
2.6.1 JavaScript中的对象 43
2.6.2 使用JSON创建数组和对象图 45
2.6.3 构造函数 47
2.6.4 使属性和函数可以关联到对象——prototype 49
2.6.5 JavaScript对象反射 50
2.6.6 方法和函数 52
2.6.7 Ajax的事件处理和函数环境 54
2.7 胖客户端(Rich Client) 56
2.7.1 什么是胖客户端 56
2.7.2 Ajax解决的问题 56
2.8 总结 58
3.1 使用CSS的原因 59
第3章 层叠样式表CSS 59
3.1.1 样式与内容的分离 60
3.1.2 可读性 60
3.1.3 一次性写入 60
3.1.4 CSS的版本与浏览器的兼容性 60
3.2 CSS基础 61
3.2.1 样式表的基础 61
3.2.2 内部样式表 63
3.2.3 外部样式表 64
3.2.4 创建和使用样式类 67
3.3.1 字体属性 68
3.3 常用的样式表属性 68
3.3.2 颜色和背景属性 70
3.3.3 文字属性 72
3.3.4 边框属性 73
3.3.5 其他 75
3.4 总结 77
4.1 DOM文档对象模型 78
4.1.1 什么是DOM 78
第4章 DOM与JavaScript 78
4.1.2 DOM的层次结构 79
4.2 Document对象 80
4.2.1 Document对象的属性 81
4.2.2 document对象的方法 83
4.3 JavaScript访问HTML表单 85
4.3.1 (表单)form基础 85
4.3.2 表单对象 87
4.3.3 使用单行文本框对象 90
4.3.4 使用密码框 92
4.3.5 使用多行文本框 93
4.3.6 使用单选框 95
4.3.7 使用复选框 97
4.3.8 使用下拉菜单 98
4.3.9 使用链接对象 100
4.3.10 使用image(图像)对象 102
4.3.11 DOM事件处理 104
4.4 JavaScript访问XML 106
4.4.1 第一个简单的例子 107
4.4.2 使用JavaScript读取XML文档 108
4.5 总结 112
第5章 Ajax工作流程 113
5.1 概述 113
5.2 XMLHttpRequest对象 114
5.2.1 认识XMLHttpRequest对象 114
5.2.2 XMLHttpRequest对象的方法 116
5.2.3 XMLHttpRequest对象的属性 117
5.2.4 使用XMLHttpRequest对象向服务器端发送请求 117
5.3 监视response的状态 119
5.3.1 回调函数——监视浏览器的状态 119
5.3.2 操纵返回的数据 120
5.4 一个完整的实例 121
5.5 详解DynaCheckRegister注册程序 125
5.5.1 页面脚本 125
5.5.2 实现原理 129
5.6 总结 134
第6章 Ajax实例 135
6.1 提示等待 135
6.1.1 原理分析 135
6.1.4 客户端代码——实现函数处理 136
6.1.3 客户端代码——创建主框架 136
6.1.2 客户端代码总体说明 136
6.1.5 客户端代码——创建数据显示的页面 138
6.1.6 服务器端代码——处理请求 139
6.2 级联下拉框 140
6.2.1 原理分析 141
6.2.2 客户端代码说明 141
6.2.3 服务器端代码说明 144
6.3 Google suggest的例子 146
6.3.1 原理分析 147
6.3.2 客户端代码总体说明 148
6.3.3 客户端代码——创建用户进行查询的页面 149
6.3.4 客户端代码——网页界面显示样式的设计 150
6.3.5 客户端代码——程序运行脚本的实现 152
6.3.6 服务器端代码总体说明 163
6.3.7 服务器端代码——创建实体 163
6.3.8 服务器端代码——创建数据库连接 164
6.3.9 服务器端代码——实现业务逻辑处理 165
6.3.10 服务器端代码——实现请求处理 166
6.4.1 原理分析 168
6.4 Slider(滑块) 168
6.3.11 性能问题 168
6.4.2 客户端代码总体说明 169
6.4.3 客户端代码——创建页面的框架 170
6.4.4 客户端代码——实现程序的脚本 172
6.4.5 服务器端代码总体说明 179
6.4.6 服务器端代码——定义实体 179
6.4.7 服务器端代码——创建与数据库的连接 180
6.4.8 服务器端代码——业务逻辑处理 181
6.4.9 服务器端代码——客户端请求处理 183
6.5 总结 184
7.1 JavaScript和浏览器的安全性 185
7.1.1 JavaScript修改设置 185
第7章 Ajax的安全问题 185
7.1.2 IFrame的问题 186
7.2.3 不使用eval 189
7.2.4 减少对象查找 189
7.2.5 字符串连接 189
7.2.2 局部变量和全局变量 189
7.2.1 循环 189
7.2 JavaScript的性能问题 189
7.2.6 类型转换 190
7.2.7 使用直接量 191
7.2.8 字符串遍历操作 191
7.2.9 高级对象 191
7.2.10 插入HTML 191
7.2.11 下标查询 191
7.2.12 创建DOM节点 191
7.3 总结 192
8.1.1 信息获取 193
第8章 Lucene基础 193
8.1 信息获取与搜索引擎 193
8.1.2 搜索引擎的发展与分类 194
8.2 Lucene的历史 195
8.2.1 什么是全文检索与全文检索系统 195
8.2.2 什么是Lucene 196
8.2.3 Lucene的发展和现状 197
8.2.4 使用Lucene能做什么 197
8.3.1 索引 198
8.3 建立索引和搜索 198
8.2.5 谁在使用Lucene 198
8.3.2 搜索 200
8.3.3 倒排索引 202
8.4 总结 203
第9章 第一个“搜索引擎” 204
9.1 初识Lucene 204
9.1.1 下载Lucene 204
9.1.2 Lucene的包结构 204
9.2.2 建立索引 209
9.2.1 选择要建立索引的文件和索引存放的位置 209
9.2 为本机的文件创建索引 209
9.3 试试搜索的效果 213
9.3.1 运行搜索 213
9.3.2 如何进行搜索——LuceneSearch类 213
9.3.3 修改测试 215
9.4 值得改进的地方 216
9.4.1 思路 216
9.4.2 其他 217
9.5 总结 217
10.1.1 提取文本 218
第10章 用Lucene来建立索引 218
10.1 索引建立的过程 218
10.1.2 构建Document 219
10.1.3 分析并建索 219
10.2 Lucene的文档格式 219
10.2.1 文档(Document) 219
10.2.2 字段(Field) 223
10.3 索引的添加——IndexWriter类 227
10.3.1 初始化 227
10.3.2 向索引添加文档 228
10.3.3 调整性能参数 231
10.3.4 限制Field长度 232
10.4 Lucene的索引文件格式简述 234
10.4.1 段(Segment) 235
10.4.2 索引文件 235
10.4.3 复合索引格式 236
10.4.4 索引转换 236
10.5 索引的存放位置——FSDirectory与RAMDirectory 236
10.5.1 在磁盘中存放——FSDirectory 237
10.5.2 在内存中存放——RAMDirectory 238
10.5.3 索引的合并 239
10.6 从索引中删除文档 241
10.6.1 删除索引的工具——IndexReader类 241
10.6.2 删除与反删除某个特定的文档 242
10.6.3 按字段(Field)来删除 244
10.7 Lucene的索引优化 245
10.7.1 为什么要优化索引 245
10.7.2 优化索引的方法——optimize() 245
10.8.2 Lucene的索引“锁” 246
10.8.1 同步法则 246
10.8 Lucene索引的同步机制 246
10.9 总结 247
第11章 Lucene搜索 248
11.1 搜索的流程 248
11.1.1 初始化Lucene的检索工具IndexSearcher 248
11.1.2 构建Query 249
11.1.3 搜索并处理返回结果 249
11.2 搜索与结果 249
11.2.1 检索工具——IndexSearcher类 249
11.2.2 检索结果——Hits 254
11.3 Lucene的评分机制 260
11.3.1 理解评分的概念 260
11.3.2 Lucene评分算法 260
11.3.3 改变文档的得分 261
11.4 构建各种Query 264
11.4.1 按词条搜索——TermQuery 264
11.4.2 “与或”搜索——BooleanQuery 266
11.4.3 在某一范围内搜索——RangeQuery 269
11.4.4 使用前缀搜索——PrefixQuery 272
11.4.5 多关键字的搜索——PhraseQuery 275
11.4.6 使用短语缀搜索——PhrasePrefixQuery 278
11.4.7 相近词语的搜索——FuzzyQuery 280
11.4.8 使用通配符搜索——WildcardQuery 282
11.5 查询字符串的解析——QueryParser类 284
11.5.1 QueryParser的简单用法 285
11.5.2 QueryParser的“与”和“或” 285
11.6 总结 286
12.1.1 Analyzer的概述 287
12.1 Lucene分析器——Analyzer 287
第12章 Lucene的分析器 287
12.1.2 分词器(Tokenizer)和过滤器(TokenFilter) 288
12.1.3 使用StandardAnalyzer进行测试 290
12.2 JavaCC与Tokenizer 294
12.2.1 JavaCC简介 294
12.2.2 通过JavaCC构建的Lucene标准分析器 295
12.3 Lucene内建的分析器 298
12.3.1 标准分析器——StandardAnalyzer 298
12.3.2 “停止词”分析器——StopAnalyzer 303
12.3.3 “空格”分析器——WhitespaceAnalyzer 306
12.4 总结 308
12.3.4 其他分析器 308
第13章 高级搜索技巧 309
13.1 对搜索的结果排序 309
13.1.1 使用Sort类排序 309
13.1.2 最简单的排序——相关度 312
13.1.3 按字段(Field)来对Document排序 314
13.1.4 对多个字段(Field)排序 316
13.1.5 自定义的排序 318
13.2.1 使用MultiFieldQueryParser来进行多域搜索 319
13.2 多域搜索和多索引搜索 319
13.2.2 使用MultiSearcher来同时搜索多个索引 321
13.2.3 使用ParallelMultiSearcher来构建多线程搜索 326
13.3 对搜索结果的过滤 326
13.3.1 日期过滤器——DateFilter 326
13.3.2 查询过滤器——QueryFilter 328
13.3.3 带缓存的过滤器——CachingWrapperFilter 331
13.4 总结 333
14.1 搜索与检索的速度 334
14.1.1 Google和百度的检索速度 334
第14章 性能测试 334
14.1.2 建立索引的速度 335
14.2 设定测试环境与测试方案 335
14.2.1 准备文档 335
14.2.2 硬件的准备 337
14.2.3 测试方案 338
14.3 为6000篇文档建立索引 338
14.3.1 构建Document 338
14.3.2 建立索引的代码 340
14.3.3 开始建立索引 345
14.3.4 调整性能参数建立索引 347
14.4 搜索测试 347
14.4.1 搜索关键字 347
14.4.2 多线程搜索的性能 349
14.5 总结 350
第15章 搜索引擎的中文问题 351
15.1 中文分词的问题 351
15.1.1 中文分词与英文分词的区别 351
15.2 Lucene对中文的处理 352
15.1.2 中文分词的方法 352
15.2.1 查看不同分析器的分词效果 353
15.2.2 CJKAnalyzer对中文的处理 354
15.3 中文分词工具ICTCLAS 354
15.3.1 词库 355
15.3.2 测试工具 355
15.3.3 开发接口 356
15.4 总结 356
第16章 Lucene SandBox 357
16.1 关于SandBox 357
16.2.2 主要功能和使用方法 358
16.2 Lucene索引工具箱——Luke 358
16.2.1 概述 358
16.3 Lucene索引监视器:LIMO 363
16.3.1 简介 363
16.3.2 主要功能和使用方法 363
16.4 Lucene命令行接口——LUCLI 368
16.4.1 简介 368
16.4.2 开始运行LUCLI 368
16.4.3 查看主要命令 368
16.5 总结 369