《征服Ajax+Lucene构建搜索引擎》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:李刚,宋伟,邱哲编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2006
  • ISBN:7115147078
  • 页数:369 页
图书介绍:本书分Ajax和Lucene两部分,共16章,内容涵盖了JavaScript的基础、层叠样式表CSS、DOM与JavaScript、AjaX工作流程、Ajax实例、Ajax的安全问题与性能测试、Lucene基础、用Lucene来建立索引、Lucene搜索、Lucene的分析器、高级搜索技巧、Lucene性能测试、Lucene的中文问题以及Lucene的工具箱SandBox。本书最大的特点在于“理论结合实践”,既简明扼要地讲解了理论知识,又提供了丰富的示例程序,力求使读者在掌握了理论知识的同时能够通过阅读示例代码加深理解。本书适合于有一定Web开发基础的Java程序员和对Ajax与Lucene感兴趣的开发人员。 本书分为两大部分共16章。   第1部分为Ajax的相关知识,共分7章。这部分内容包括Ajax入门体验、JavaScript关键技术、CSS...

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