Lucene的实战目录

目录

1部分Lucene核心

第1章遇见Lucene 3

1.1应对信息爆炸4

1.2什么是Lucene 5

Lucene能做什么6

1 . 2 . 2 Lucene 7的历史

1.3 Lucene和搜索组件9

1.3.1指数成分10

1.3.2搜索组件13

1.3.3搜索程序的其他模块16

1 . 3 . 4 Lucene和应用程序18之间的集成点

1.4 Lucene实战:程序示例18

1.4.1创建索引19

1.4.2搜索索引22

1.5理解索引进程的核心类25

1.5.1索引编写器25

1.5.2目录25

1.5.3分析仪26

1.5.4文件26

1.5.5字段27

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

1.6.1索引搜索器27

1.6.2期限28

1.6.3查询28

1.6.4 TermQuery 28

1.6.5 TopDocs 29

1.7汇总29

第二章建筑索引30

2.1 Lucene如何对搜索内容建模31

2.1.1文档和域31

2.1.2灵活架构32

2.1.3反规格化)32

2.2了解索引过程33

2 . 2 . 1提取文本和创建文档33

文件分析34

2.2.3向索引添加文档34

2.3基本索引操作35

将文件35添加到索引中

2.3.2删除索引中的文档38

2.3.3更新索引中的文档39

2.4域选项41

2.4.1域索引选项41

2.4.2域存储选项42

2.4.3域42的项目向量选项

2.4.4读取器、令牌流和byte[]字段值42。

2.4.5域选项组合43

2.4.6域排序选项44

2.4.7多范围44

2.5加权文档和字段45

2.5.1文件加权操作45

2.5.2域加权操作46

2.5.3加权标准)47

2.6索引号、日期和时间48

1索引号48

索引日期和时间49

2.7字段截断)50

2.8近实时搜索51

2.9优化指数51

2.10其他目录小类52

2.11并发、线程安全和锁定机制55

2.11.1线程安全和多虚拟机安全55

2.11.2通过远程文件系统访问索引56

2.11.3索引锁定机制57

2.12调试索引59

2.13高级索引概念60

使用IndexReader删除文档61。

2.13.2恢复已删除文档的已用磁盘空间62

2.13.3缓冲和刷新62

2.13.4索引提交63

2.13.5 ACID交易和指数连续性65

2.13.6合并段66

2.14汇总68

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

3.1实现简单搜索功能71

3.1.1搜索特定项目72

3.1.2分析用户输入的查询表达式:QueryParser 73

3.2使用索引搜索器类别76

3.2.1创建索引搜索器类别76

3.2.2实现搜索功能78

3.2.3使用TopDocs class 78

3.2.4搜索结果的分页

3.2.5近实时搜索79

3.3了解Lucene 81的评分机制

3 . 3 . 1 Lucene如何得分81?

3.3.2使用explain()了解搜索结果得分83

3.4 Lucene的多样化查询84

3.4.1按项目搜索:$ TermQuery Class 85

3.4.2在指定的项目范围内搜索:TermRangeQuery Class 86

3.4.3在指定的数字范围内搜索:NumericRangeQuery class 87

3.4.4按字符串搜索:前缀查询类88

3.4.5组合查询:BooleanQuery类88

3.4.6通过短语搜索:短语查询类91

通配符查询类别93

3.4.8搜索相似项目:模糊查询类别94

3.4.9匹配所有文档:MatchAllDocsQuery类95

3.5解析查询表达式:QueryParser 96

3.5.1 Query.toString方法97

术语查询97

3.5.3物料范围查询98

数字范围搜索和日期范围搜索99

3.5.5前缀查询和通配符查询99

布尔运算符100

3.5.7短语查询100

3.5.8模糊查询101

MatchAllDocsQuery 102

3.5.10分组查询102

3.5.11域选择103

3.5.12为子查询设置权重103。

3.5.13我一定要用QueryParse 103吗?

3.6摘要104

第4章Lucene 105的分析过程

4.1使用分析仪106

4.1.107过程中的分析

4.1.2 QueryParser分析109

4.1.3解析vs分析:分析仪什么时候不再适用于109?

4.2解析分析器110

4.2.1词汇单位的构成111

4.2.2揭示词汇单位流112

4.2.3观察分析仪115

4.2.4词法单元过滤:过滤顺序的重要性119

4.3使用内置分析仪121

4.3.1停止分析器122

标准分析仪122

4.3.3应采用哪种岩心分析仪123?

4.4近音词查询123

4.5同义词、别名和其他具有相同含义的词126

4.5.1创建同义词分析器127

4.5.2显示词汇单元131的位置。

4.6词干分析132

4.6.1 StopFilter,预留空间133。

4.6.2将词干化操作和停用词移除操作134结合起来。

4.7域分析134

4.7.1多区间分析135

4.7.2特定领域分析135

4.7.3搜索未解析域136。

4.8语言分析139

4.8.1 Unicode和字符编码139

4.8.2非英语语言分析140

4.8.3字符规范化处理140

4.8.4亚洲语言分析141

4.8.5关于非英语语言分析的其他问题143

4.9 Nutch分析144

4.10汇总146

第5章高级搜索技术147

5.1 Lucene域缓存148

5.1.1为所有文档加载域值149。

对应于段落5.1.2的阅读器149。

5.2对搜索结果进行排序150

5.2.1按域值150排序

5.2.2按相关性排序153

5.2.3按索引顺序排序154

5.2.4按域排序154

5.2.5反向排序155

5.2.6按多个域排序156

5.2.7排序字段选择类型157。

5.2.8使用非默认区域设置对157进行排序。

5.3使用multiprasequery 158

5.4多域一次性查询160

5.5跨度查询162

5.5.1 Span查询构建模块:SpanTermQuery 165

5.5.2求域开头的跨度166。

5.5.3相邻跨度167

5.5.4从匹配结果中排除169的重叠跨度。

SpanOrQuery class 170

SpanQuery类和QueryParser类171

5.6搜索过滤172

5.6.1终端测距过滤器173

数字范围过滤器174

5 . 6 . 3 FieldCacheRangeFilter 174

5.6.4特定项目过滤174

5.6.5使用QueryWrapperFilter类175

使用SpanQueryFilter class 175。

安全过滤器176

5.6.8使用BooleanQuery类177进行过滤

前置过滤器178

5.6.10缓存过滤结果178

5.6.11将过滤器封装为查询179。

5.6.12过滤器过滤器179

5.6.13非Lucene内置过滤器180

5.7使用函数查询实现自定义评分180。

5.7.1相关类的功能查询180

5.7.2用函数查询182对最近修改的文档进行加权。

5.8搜索多个索引184

5.8.1使用多重搜索类184。

5.8.2使用ParallelMultiSearcher 186进行多线程搜索

5.9使用术语向量186

5.9.1搜索相似书籍187

5.9.2属于哪一类?190.

5.9.3端子193级

5.10用FieldSelector加载域194。

5.11停止慢速搜索195

5.12汇总196

第六章扩展搜索198

6.1使用自定义排序方法199。

6.1.1基于地理位置排序方法的文档索引199

6.1.2自定义地理位置排序模式200的实现

6.1.3访问自定义排序中的值203

6.2开发自定义收集器204

收集器基本类别205

6.2.2自定义收集器:BookLinkCollector 206

AllDocCollector类207

6.3扩展QueryParser类208

6.3.1自定义QueryParser行为208

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

6.3.3处理数值域210的范围查询

6.3.4处理日期范围是211。

6.3.5查询订购短语213

6.4自定义过滤器215

6.4.1实现自定义过滤器215

6.4.2在搜索过程中使用自定义过滤器216。

6.4.3另一个选项:FilterQuery类217。

6.5有效载荷)218)

6.5.1分析期间生成的有效载荷219

6.5.2搜索期间使用的有效载荷220

6.5.3有效载荷和跨度查询223

6.5.4通过$回收有效载荷位置223

6.6摘要223

第2部分Lucene应用程序

第7章使用Tika提取文本227

7.1提卡228是什么

7.2 tika和API 230的逻辑设计

7.3安装Tika 231

7.4 Tika的内置文本提取工具232

7.5实现文本提取的编程234

7.5.1索引Lucene文档234

237级Tika工具

7.5.3选择定制分析仪238

7.6 tika 238的限制

7.7索引自定义XML文件239

7.7.1用SAX 239解析

7.7.2使用Apache Commons消化器进行解析和索引242

7.8其他选择244

7.9摘要245

第八章Lucene基本扩展246

8.1 Luke: Lucene的索引工具箱247

8.1.1总览页签:索引248的全局视图

8.1.2浏览文档249

8.1.3使用QueryParser 251进行搜索

8.1.4文件和插件选项卡252

8.2分析器、词汇单元和词汇单元过滤器253

雪球分析仪255

Ngram过滤器256

瓦片式过滤器258

8.2.4捐赠分析仪的获取258

8.3突出显示查询项259

8.3.1高亮模块259

8.3.2独立高亮示例262

8.3.3使用CSS突出显示263

8.3.4突出显示搜索结果264

8.4 FastVector荧光笔266类

8.5拼写检查269

8.5.1生成提示列表269

8.5.2选择最佳提示271

8.5.3向用户显示搜索结果272

8.5.4关于加强拼写检查的一些考虑273

8.6醒目查询扩展功能274

8.6.1更多信息

8.6.2模糊相似查询275

8.6.3增强查询275

术语过滤器276

8.6.5重复过滤器276

RegexQuery 276

8.7构建软件捐赠模块(contrib模块)277

8.7.1源代码获取方法277

8 . 7 . 2 contrib目录的Ant插件277

8.8摘要278

第九章Lucene高级扩展279

9.1链式过滤器280

9.2使用Berkeley DB存储索引282

9.3 WordNet同义词284

建立同义词索引285

9.3.2将WordNet同义词链接到Analyzer 287

9.4基于内存的快速索引289

9.5 XML QueryParser:超越“一个框”的搜索界面289

9.5.1使用XmlQueryParser 291。

9.5.2扩展XML查询语法295

9.6外围查询语言296

9.7空间Lucene 298

9.7.1索引空间数据299

9.7.2搜索空间数据302

9.7.3空间Lucene 304的性能特征

9.8远程多索引搜索306

9.9灵活的QueryParser 309

9.10其他内容312

9.11汇总313

第10章其他编程语言使用Lucene 314。

10.1移植315简介

10.1.1移植选择316

10.1.2选择合适的移植版本317。

10.2氯新烯(C++) 317

移植目的318

10.2.2 API和索引兼容性319

10.2.3支持的平台

10.2.4现状及未来展望321

10.3 Lucene-Net(C#等。NET编程语言)321

10.3.1 API兼容性323

10.3.2索引兼容性324

10.4 KinoSearch和Lucy(Perl) 324

1基诺搜索325

露西327

10.4.3其他Perl选项327

10.5雪貂(红宝石)328

10.6 PHP 329

10.6.1 Zend框架329

10.6.2 PHP网桥330

10.7 PyLucene(Python) 330

10.7.1 API兼容性332

10.7.2其他Python选项332

10.8 Solr(包括多种编程语言)332

10.9汇总334

第11章Lucene管理和性能调优335

11.1性能调整336

11.1.1简单性能调整步骤337

11.1.2试验方法338

11.1.3索引搜索延迟调整339

11.1.4索引操作吞吐量调整340

11.1.5搜索延迟和搜索吞吐量调整344

11.2多线程和并行处理346

11.2.1对索引操作347使用多线程。

11.2.2使用多线程搜索操作351

11.3资源消耗管理354

11.3.1磁盘空间管理354

11.3.2文件描述符管理357

11.3.3内存管理361

11.4热备份索引364

11.4.1创建索引备份365

11.4.2恢复索引366

11.5常见错误367

11.5.1指数受损367

11.5.2修复指数369

11.6汇总369

第三部分案例分析

第12章案例分析1:克鲁格373

克鲁格简介374

12.2应用程序架构375

12.3搜索性能376

12.4源代码分析377

12.5子字符串搜索378

12.6查询VS搜索381

12.7改善空间382

12.7.1字段缓存内存使用情况382

12.7.2综合指数382

12.8汇总383

第13章案例分析2:魔女384

13.1警报器简介385

警笛优势385

13.2.1搜索所有域387

一个高效的字典388

13.2.3可变字段388

13.2.4多值域的高效处理388

13.3带警报器的索引实体388

13.3.1数据模型389

13.3.2实施问题389

13.3.3指数汇总390

13.3.4索引前的数据准备390

13.4使用警报器392搜索实体

13 . 4 . 1搜索内容392

13.4.2按单元393限制搜索范围

13.4.3将单元格组合成元组393。

13.4.4实体描述查询394

13.5在Solr中集成警报器394

13.6基准395

13.7摘要397

第14章案例分析3: LinkedIn 398

14.1使用Bobo浏览的群组搜索398

设计14.1.1波波浏览400

14.1.2深度分组搜索403

14.2使用Zoie 405进行实时搜索

14.2.1佐伊架构406

实时与近实时409

14.2.3文件和索引请求411

14.2.4自定义索引阅读器411

14.2.5对比Lucene 412的近实时搜索。

14.2.6分布式搜索413

14.3汇总415

附录A Lucene 416的安装

A.1二进制文件安装416

A.2运行命令行演示程序417

A.3运行Web应用程序演示程序418

A.4编译源代码419

A.5错误的安排

附录B Lucene索引格式421

B.1逻辑索引视图421

B.2关于索引结构422

B.2.1了解多文件索引结构422

B.2.2了解复合指数结构425

B.2.3转换指数结构426

B.3反向指数427

B.4摘要430

附录C Lucene/Contib基准测试431

C.1运行测试脚本432

C.2测试脚本的组成部分435

C.2.1内容源和文档生成器438

C.2.2查询生成器439

C.3控制结构439

C.4内置任务441

C.4.1创建和使用行文件445

C.4.2内置报表任务446

C.5评估搜索质量446

C.6错误处理449

C.7概要449

附录d资源450

D.1 Lucene知识库450

D.2国际化

D.3语言检测451

D.4项向量451

D.5 Lucene移植版本451

D.6案例研究452

D.7其他

D.8信息检索软件452

D.9道格·卡丁作品453

D.9.1会议文件453

D.9.2美国专利454