《Lucene IN ACTION 中文版 Java搜索引擎指南》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Otis Gospodnetic,(美)Erik Hatcher著;谭鸿等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2007
  • ISBN:7121032171
  • 页数:393 页
图书介绍:本书深入浅出地介绍了Lucene——一个开源的使用Java语言编写的全文搜索引擎开发包。它通过浅显的语言、大量的图注、丰富的代码示例,以及清晰的结构为读者呈现出作为优秀开源项目的Lucene 所体现的强大功能。全书共10章,分为两大部分。第1部分Lucene的核心,着重于Lucene的核心API介绍,并按照把Lucene集成到程序中的顺序宋组织;第2部分Lucene的应用,通过对Lucene内置工具的介绍,展示了Lucene技术的高级应用和在各种程序语言上的移植。. 本书既可作为学习材料,又可以作为参考手册。它适合于已经熟悉基本Java编程的读者,以及希望能够把强大的搜索功能加入到其应用程序中的开发者。对于从事搜索引擎工作的工程技术人员,以及在Java平台上进行各类软件开发的人员和编程爱好者,本书也有很好的学习参考价值。

第1部分 Lucene的核心 2

第1章 初识Lucene 2

推荐序 3

1.1 信息组织和访问的发展历程 3

译者序 5

1.2 理解Lucene 5

1.2.1 Lucene是什么 5

1.2.2 Lucene能做些什么 6

1.2.3 Lucene的历史 7

1.2.5 Lucene移植:Perl、Python、C++、.NET及Ruby版本 8

1.3 索引和搜索 8

1.2.4 使用Lucene的组织 8

1.3.2 什么是搜索 9

1.3.1 什么是索引,为什么如此重要? 9

1.4 Lucene实践:一个应用实例 9

1.4.1 创建一个索引 10

前言1 13

1.4.2 搜索一个索引 13

前言2 15

1.5 理解索引过程的核心类 16

1.5.1 IndexWriter 16

1.5.2 Directory 17

1.5.3 Analyzer 17

致谢 18

1.5.4 Document 18

1.5.5 Field 18

1.6 理解搜索过程的核心类 20

1.6.1 IndexSearcher 20

1.6.2 Term 20

1.6.5 Hits 21

1.7 可选择的同类产品 21

关于此书 21

1.6.4 TermQuery 21

1.6.3 Query 21

1.7.1 信息检索工具库 22

1.7.2 索引与搜索应用程序 23

1.7.3 在线资源 24

1.8 小结 24

第2章 索引 26

2.1 理解索引过程 27

2.1.1 转换成文本 28

2.1.2 分析 28

2.1.3 将分析过后的数据写入索引 29

2.2 基本索引操作 29

2.2.1 向索引添加文档 29

2.2.2 删除索引中的文档 31

2.2.3 恢复被删除的文档 33

2.2.4 更新索引中的文档 34

2.3 增强Document和Field对象 35

2.4 索引日期 37

2.5 索引数字 38

2.6 索引Field对象用于排序 39

2.7 控制索引过程 39

2.7.1 调整索引性能 39

2.7.2 内存中的索引:RAMDirectory 45

2.7.3 限制域的大小:maxFieldLength 50

2.8 优化索引 51

2.9 并发性、线程安全性以及锁机制 54

2.9.1 并发访问的规则 55

2.9.2 线程安全性 55

2.9.3 索引锁机制 57

2.9.4 禁用索引锁 61

2.10 调试索引过程 61

2.11 小结 62

第3章 为应用程序添加搜索功能 63

3.1 实现一个简单的搜索程序 64

3.1.1 对特定项(specific term)的搜索 65

3.1.2 解析用户输入的查询表达式:QueryParser 66

3.2 使用IndexSearcher 69

3.2.1 使用Hits 70

3.2.2 通过Hits分页显示搜索结果 71

3.2.3 将索引读入内存 72

3.3 理解Lucene的评分机制 72

3.3.1 关于Lucene,还有更多的解释 74

3.4 在程序代码中创建Query对象 75

3.4.1 通过项进行搜索:TermQuery 76

3.4.2 在指定范围内搜索:RangeQuery 77

3.4.3 通过字符串进行搜索:PrefixQuery 78

3.4.4 组合查询:BooleanQuery 79

3.4.5 通过短语搜索:PhraseQuery 81

3.4.6 使用通配符搜索:WildcardQuery 84

3.4.7 搜索类似项:FuzzyQuery 85

3.5 解析查询表达式:QueryParser 87

3.5.1 Query类的toString()方法 87

3.5.2 布尔操作符 88

3.5.5 在指定范围搜索 89

3.5.4 域的选择 89

3.5.3 查询组合 89

3.5.6 短语查询 91

3.5.7 通配符和前缀查询 92

3.5.8 模糊查询 93

3.5.9 对查询进行加权操作 93

3.5.10 需不需要使用QueryParse? 93

3.6 小结 94

第4章 分析 95

4.1 使用分析器 97

4.1.1 索引过程中的分析 98

4.1.2 QueryParser分析 99

4.1.3 解析vs分析:分析器何时不适用 100

4.2 剖析分析器 100

4.2.1 语汇单元的组成 101

4.2.2 TokenStream揭密 102

4.2.3 观察分析器 104

4.2.4 过滤顺序的重要性 108

4.3 使用内置的分析器 111

4.3.1 StopAnalyzer 111

4.3.2 StandardAnalyzer 112

4.4 处理关键词域 113

4.4.1 更换关键字分析器 116

4.5 近音词查询 117

4.6 同义词、别名以及其他表示相同意义的词 120

4.6.1 显示语汇单元的位置 126

4.7 词干分析 127

4.7.1 保留空位 128

4.7.2 PositionalPorterStopAnalyzer 129

4.7.3 为保留停用词空位所带来的问题 129

4.8 语言分析 131

4.8.1 Unicode及字符编码 132

4.8.2 非英语语种分析 132

4.8.3 亚洲语种分析 133

4.8.4 非英语语种分析引起的其他一些问题 136

4.9 Nutch分析 136

4.10 小结 138

第5章 高级搜索技术 139

5.1 对搜索结果进行排序 140

5.1.1 使用排序方法 140

5.1.2 通过相关性进行排序 142

5.1.3 按照索引顺序排序 143

5.1.4 通过某个域进行排序 144

5.1.5 以相反顺序排序 145

5.1.6 根据多个域进行排序 145

5.1.7 为排序域选择一个类型 147

5.1.8 使用非默认的locale方式排序 147

5.1.9 排序对性能的影响 147

5.2 使用PhrasePrefixQuery 148

5.3 一次实现在多个域上的查询 150

5.4 跨度查询:Lucene新的隐藏法宝 152

5.4.1 跨度查询的构件模块——SpanTermQuery 154

5.4.2 在一个域的起点查找跨度 156

5.4.3 彼此相邻的跨度 156

5.4.4 在匹配结果中排除相互交迭的跨度 158

5.4.5 全局跨度查询 159

5.4.6 SpanQuery类和QueryParser类 161

5.5 搜索过滤 161

5.5.1 DateFilter的使用 162

5.5.2 使用Queryfilter 164

5.5.3 安全过滤器 165

5.5.4 QueryFilter的过滤器的替代方案 166

5.5.5 缓存过滤器的结果 167

5.5.6 更多非内置的的过滤器 168

5.6 对多个索引的搜索 168

5.6.1 使用MultiSearcher 168

5.6.2 使用ParallelMultiSearcher进行多线程搜索 170

5.7 使用项向量 175

5.7.1 查找相似书籍 176

5.7.2 它属于哪个类别? 180

5.8 小结 183

第6章 扩展搜索 184

6.1 使用自定义的排序方法 185

6.1.1 访问用于自定义排序的值 190

6.2 编写自定义的HitCollector 191

6.2.1 关于BookLinkCollector 192

6.2.2 使用BookLinkCollector 192

6.3 扩展QueryParser 193

6.3.1 自定义QueryParser的行为 193

6.3.2 禁用模糊查询和通配符查询 194

6.3.3 对数值域的范围查询的处理 195

6.3.4 对已排序短语进行查询 198

6.4 使用自定义过滤器 199

6.4.1 使用过滤后的查询 202

6.5 性能测试 203

6.5.1 对搜索速度进行测试 204

6.5.2 负载测试 207

6.5.3 再议QueryParser! 209

6.6 小结 210

6.5.4 性能测试的本意 210

第2部分 Lucene的应用 212

第7章 对常用格式的文档进行解析 212

7.1 对富文本文档进行处理 213

7.1.1 建立一个通用的DocumentHandler接口 214

7.2 索引XML文档 215

7.2.1 用SAX API进行解析并索引 216

7.2.2 使用Digester来分析和索引 219

7.3.1 使用PDFBox提取文本和索引 224

7.3 索引PDF文档 224

7.3.2 PDFBox内置的支持Lucene特性 228

7.4 索引HTML文档 230

7.4.1 获取HTML源数据 230

7.4.2 使用JTidy 231

7.4.3 使用NekoHTML 234

7.5 索引Microsoft Word文档 237

7.5.1 使用POI 237

7.5.2 使用TextMining.org包的API 238

7.6 索引RTF文档 240

7.7 索引纯文本文档 241

7.8 创建文档处理框架 242

7.8.1 FileHandler接口 244

7.8.2 ExtensionFileHandler类 244

7.8.3 应用程序FileIndexer 247

7.8.4 FileIndexer的使用 250

7.8.5 FileIndexer的缺陷,以及如何扩展这个框架 250

7.9 其他文本提取工具 251

7.9.1 文档管理系统及相关服务 252

7.10 小结 253

第8章 Lucene的相关工具及其扩展 254

8.1 Lucene的Sandbox工具包的使用 255

8.2 与索引的交互 256

8.2.1 lucli:一个命令行接口程序 256

8.2.2 Luke:Lucene索引的工具箱 258

8.2.3 LIMO:Lucene索引监视器 265

8.3 Analyzers、tokenizers和TokenFilters 268

8.3.1 SnowballAnalyzer 269

8.4.1 使用〈index〉task 270

8.4 使用Ant和Lucene进行Java开发 270

8.3.2 如何获得Sandbox分析器 270

8.4.2 创建自定义的文档处理器 272

8.4.3 安装 275

8.5 JavaScirpt浏览器工具 276

8.5.1 JavaScript查询的构造与验证 276

8.5.2 特殊字符的转义操作 277

8.5.3 使用JavaScript支持 277

8.6 WordNet中的同义词 278

8.6.1 构建同义词索引 279

8.6.2 将WordNet中的同义词连接到分析器中 281

8.6.3 手机上的Lucene 282

8.7 高亮显示查询项 284

8.7.1 用CSS进行高亮显示 286

8.7.2 高亮显示命中结果集 288

8.8 链式过滤器 289

8.9 在Berkeley DB中存储索引 292

8.9.1 将索引存入DbDirectory 292

8.9.2 安装DbDirectory 293

8.10.1 Check out 294

8.10.2 Sandbox中的Ant 294

8.10 构建Sandbox 294

8.11 小结 295

第9章 Lucene的移植 296

9.1 移植版本与Lucene的关系 297

9.2 CLucene 298

9.2.1 支持的平台 298

9.2.2 API的兼容性 299

9.2.3 对Unicode编码的支持 300

9.3 dotLucene 301

9.2.4 性能 301

9.2.5 用户群 301

9.3.1 API的兼容性 302

9.3.2 索引的兼容性 302

9.3.3 性能 302

9.3.4 用户群 302

9.4 Plucene 303

9.4.1 API的兼容性 303

9.4.3 性能 304

9.4.4 用户 304

9.4.2 索引的兼容性 304

9.5 Lupy 305

9.5.1 API的兼容性 305

9.5.2 索引的兼容性 306

9.5.3 性能 306

9.5.4 用户群 307

9.6 PyLucene 307

9.6.1 API的兼容性 307

9.6.4 用户群 308

9.7 小结 308

9.6.3 性能 308

9.6.2 索引的兼容性 308

第10章 案例分析 309

10.1 Nutch:“搜索引擎的NPR” 310

10.1.1 深入探索Nutch 311

10.1.2 Nutch的其他一些特性 312

10.2 在jGuru上使用Lucene 313

10.2.1 主题的专有名词和文档分类 314

10.2.2 搜索数据库的结构 315

10.2.3 索引域 316

10.2.4 索引操作和预处理内容 317

10.2.5 查询 319

10.2.6 JGuruMultiSearcher 322

10.2.7 其他一些内容 324

10.3 在SearchBlox中使用Lucene 324

10.3.1 为什么选择Lucene 324

10.3.2 SearchBlox的体系结构 325

10.3.3 搜索结果 326

10.3.4 语言支持 326

10.4 Xtra Mind公司使用Lucene开发的XM-InformationMinderTM 327

10.3.6 概要 327

10.3.5 报表引擎 327

10.4.1 系统架构 330

10.4.2 Lucene是如何帮助我们完成系统的 332

10.5 Alias-i:Lucene中的拼写变体 333

10.5.1 Alias-i应用程序体系架构 334

10.5.2 拼写变种 336

10.5.3 拼写修正的噪声信道模型 337

10.5.4 拼写变体的向量比较模型 338

10.5.5 一个subword(子串)Lucene分析器 339

10.5.8 参考文献 342

10.5.6 精确度、效率及其他应用 342

10.5.7 语境中的混用 342

10.6 Michaels.com上设计精巧的搜索功能 343

10.6.1 对网站内容进行索引 344

10.6.2 对内容进行搜索 349

10.6.3 搜索统计数据 352

10.6.4 小结 352

10.7 我喜欢Lucene:TheServerSide 352

10.7.1 建立更好的搜索功能 352

10.7.2 高层基础架构 354

10.7.3 建立索引 355

10.7.4 对索引进行搜索 359

10.7.5 配置:中央控制中心 361

10.7.6 Web层:TheSeeeeeeeeeeeerverSide? 364

10.7.7 小结 366

10.8 结论 367

附录A 安装Lucene 368

附录B Lucene索引文件格式 374

附录C 资源 388