《Solr 实战》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)崔·格兰杰(Trey Grainger),提摩斯·波特(Timothy Potter)著;范炜译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121311659
  • 页数:598 页
图书介绍:本书介绍了当下最流行的开源搜索技术解决方案Solr。在搜索引擎视域下,循序渐进地介绍了Solr是什么、Solr能做什么,以及如何更好地使用Solr进行开发。在搜索基础层,本书从Solr的快速搭建入手,介绍了Solr背后的信息检索基本概念,之后重点讲解了构建一个搜索引擎所需的核心模块:索引构建、文本分析、执行搜索及处理搜索结果。在搜索功能层,详细介绍了Solr的四大增强型搜索功能:分面搜索、搜索结果高亮、查询建议、搜索结果分组等。在搜索研究的进阶层,介绍了SolrCloud、多语种搜索及复杂查询操作等。最后,围绕搜索引擎的本质核心问题“相关度”展开了讨论与展望。

第1部分 初识Solr 1

1 Solr入门 2

1.1 为什么需要搜索引擎 3

1.1.1 管理以文本为中心的数据 3

1.1.2 常见的搜索引擎用例 6

1.2 Solr是什么 8

1.2.1 信息检索引擎 9

1.2.2 灵活的模式管理 11

1.2.3 Java Web应用 12

1.2.4 一台服务器上的多个索引 13

1.2.5 可扩展性(插件) 13

1.2.6 可伸缩性 14

1.2.7 容错性 15

1.3 选择Solr的理由 15

1.3.1 面向软件架构师的Solr 15

1.3.2 面向系统管理员的Solr 16

1.3.3 面向CEO的Solr 17

1.4 功能概述 17

1.4.1 用户体验功能 17

1.4.2 数据建模功能 19

1.4.3 Solr4的新功能 20

1.5 本章小结 22

2 Solr上手 23

2.1 开始上手 24

2.1.1 Solr的安装 24

2.1.2 启动Solr的示例服务器 25

2.1.3 了解Solr主目录 29

2.1.4 对示例文档进行索引 30

2.2 一切都关乎搜索 31

2.2.1 Solr查询表单详解 31

2.2.2 Solr的搜索返回机制 34

2.2.3 排名检索 36

2.2.4 分页和排序 36

2.2.5 扩展的搜索功能 38

2.3 Solr管理控制台一览 40

2.4 根据需求改造搜索示例服务器 42

2.5 本章小结 43

3 Solr基础理论 45

3.1 搜索、匹配与找寻内容 46

3.1.1 何为文档 46

3.1.2 基本搜索问题 47

3.1.3 倒排索引 50

3.1.4 词项、短语与布尔逻辑 51

3.1.5 找到文档集 53

3.1.6 短语查询与术语位置 55

3.1.7 模糊匹配 57

3.1.8 快速小结 61

3.2 相关度 61

3.2.1 默认相似度 62

3.2.2 词项频次 63

3.2.3 反向文档频次 64

3.2.4 词项权重 65

3.2.5 规范化因子 66

3.3 查准率与查全率 67

3.3.1 查准率 67

3.3.2 查全率 68

3.3.3 达到平衡 69

3.4 搜索的规模化 70

3.4.1 非规范化文档 70

3.4.2 分布式搜索 72

3.4.3 集群vs.服务器 73

3.4.4 Solr的局限 74

3.5 本章小结 75

4 配置Solr 77

4.1 solrconfig.xml文件概览 80

4.1.1 常见的XML数据结构和数据类型元素 82

4.1.2 配置文件更新的应用 82

4.1.3 Solr的其他配置 83

4.2 查询请求处理 85

4.2.1 请求处理简介 86

4.2.2 搜索处理器 88

4.2.3 Solritas的browse请求处理器示例 90

4.2.4 利用搜索组件扩展查询处理 94

4.3 管理搜索器 98

4.3.1 新建搜索器 99

4.3.2 新搜索器预热 100

4.4 缓存管理 103

4.4.1 缓存原理 103

4.4.2 过滤器缓存 105

4.4.3 查询结果缓存 108

4.4.4 文档缓存 110

4.4.5 字段值缓存 110

4.5 其他配置选项 110

4.6 本章小结 111

5 创建索引 112

5.1 微博搜索应用示例 113

5.1.1 面向搜索的内容表示 113

5.1.2 Solr索引构建概览 115

5.2 设计自己的schema 117

5.2.1 文档粒度 117

5.2.3 索引字段 119

5.2.4 存储字段 119

5.2.5 schema.xml概览 120

5.3 在schema.xml中定义字段 121

5.3.1 必备字段属性 122

5.3.2 多值字段 123

5.3.3 动态字段 124

5.3.4 复制字段 127

5.3.5 唯一键字段 129

5.4 结构化非文本字段类型 129

5.4.1 字符串字段 130

5.4.2 日期字段 131

5.4.3 数值字段 133

5.4.4 高级字段类型属性 134

5.5 发送文档到Solr进行索引 137

5.5.1 使用XML或JSON进行文档索引 137

5.5.2 使用SolrJ客户端库添加文档索引 140

5.5.3 向Solr导入文档的其他工具 142

5.6 更新处理器 143

5.6.1 将文档提交到索引 145

5.6.2 事务日志 146

5.6.3 原子更新 148

5.7 索引管理 151

5.7.1 索引存储 151

5.7.2 索引片段合并 154

5.8 本章小结 156

6 文本分析 157

6.1 微博文本分析 158

6.2 基础文本分析 161

6.2.1 分析器 163

6.2.2 分词器 163

6.2.3 分词过滤器 164

6.2.4 StandardTokenizer 164

6.2.5 使用StopFilterFactory移除停用词 165

6.2.6 使用LowerCaseFilterFactory对词项进行小写转换 166

6.2.7 通过Solr分析表单进行文本分析测试 167

6.3 为微博文本自定义一个字段类型 169

6.3.1 使用PatternReplaceCharFilterFactory折叠重复的字母 172

6.3.2 保留主题标签、提及符号和连字符词项 173

6.3.3 使用ASCIIFoldingFilterFactory移除变音符号 177

6.3.4 使用KStemFilterFactory提取词干 177

6.3.5 在查询阶段使用SynonymFilterFactory加入同义词 178

6.3.6 把过滤器组合在一起 179

6.4 高级文本分析 182

6.4.1 高级字段属性 182

6.4.2 各语种文本分析 183

6.4.3 使用Solr插件扩展文本分析 185

6.5 本章小结 188

第2部分 Solr的核心功能 191

7 执行查询和处理搜索结果 192

7.1 Solr请求详解 193

7.1.1 请求处理器 193

7.1.2 搜索组件 197

7.1.3 查询解析器 200

7.2 查询解析器的使用 201

7.2.1 指定查询解析器 201

7.2.2 局部参数 201

7.3 查询和过滤器 204

7.3.1 fq和q参数 204

7.3.2 处理代价过高的过滤器 207

7.4 默认查询分析器(Lucene查询解析器) 209

7.4.1 Lucene查询解析器语法 209

7.5 处理用户查询(eDisMax查询解析器) 215

7.5.1 eDisMax查询解析器概述 216

7.5.2 eDisMax查询参数 216

7.5.3 搜索多个字段 216

7.5.4 查询与短语的权重调整 217

7.5.5 字段别名 219

7.5.6 可访问字段 221

7.5.7 最小匹配 221

7.5.8 eDisMax的优缺点 223

7.6 其他有用的查询解析器 225

7.6.1 字段查询解析器 225

7.6.2 词项查询解析器和原始查询解析器 225

7.6.3 函数查询解析器和函数区间查询解析器 226

7.6.4 嵌套查询和嵌套查询解析器 226

7.6.5 调整权重查询解析器 227

7.6.6 前缀查询解析器 228

7.6.7 空间查询解析器 228

7.6.8 连接查询解析器 228

7.6.9 分支查询解析器 229

7.6.10 外围查询解析器 229

7.6.11 最大得分查询解析器 230

7.6.12 折叠查询解析器 230

7.7 返回搜索结果 231

7.7.1 选择响应格式 231

7.7.2 选择返回字段 233

7.7.3 搜索结果分页 235

7.8 搜索结果排序 237

7.8.1 按字段排序 238

7.8.2 按函数排序 239

7.8.3 模糊排序 239

7.9 调试查询结果 240

7.9.1 返回调试信息 240

7.10 本章小结 241

8 分面搜索 242

8.1 搜索结果概览 243

8.2 建立测试数据 246

8.3 字段分面 250

8.4 查询分面 255

8.5 区间分面 257

8.6 基于分面值的过滤 260

8.6.1 在分面上使用过滤器 260

8.6.2 基于分面值的安全过滤方法 264

8.7 多选分面、键与标记 266

8.7.1 键 266

8.7.2 标记、排除和多选分面 268

8.8 超越分面基础 271

8.9 本章小结 271

9 搜索结果高亮 272

9.1 高亮简介 273

9.2 高亮工作原理 274

9.2.1 为UFO目击数据创建新的Solr内核 275

9.2.2 索引构建前预处理UFO目击数据集 275

9.2.3 探索UFO目击数据集 278

9.2.4 开箱即用的高亮 278

9.2.5 高亮具体细节 281

9.2.6 改善高亮显示结果 287

9.3 使用FastVectorHighlighter组件提升性能 292

9.4 PostingsHighlighter组件 293

9.5 本章小结 296

10 查询建议 297

10.1 拼写检查 298

10.1.1 索引维基百科的文章 298

10.1.2 拼写检查举例 300

10.1.3 拼写检查搜索组件 303

10.2 自动建议查询词 309

10.2.1 自动建议请求处理器 309

10.2.2 自动建议搜索组件 311

10.3 文档字段值建议 312

10.3.1 使用n-grams生成建议 312

10.3.2 n-gram-driven请求处理器 314

10.4 基于用户活动提供查询建议 315

10.5 本章小结 320

11 结果分组/字段折叠 321

11.1 结果分组vs.字段折叠 322

11.2 忽略重复文档 322

11.3 搜索结果中每组返回多个文档 330

11.4 按照函数和查询对结果分组 334

11.4.1 按照函数进行分组 334

11.4.2 按照查询进行分组 336

11.5 对分组结果进行分页和排序 337

11.6 分组陷阱 340

11.6.1 根据结果分组进行分面操作 340

11.6.2 分布式结果分组 342

11.6.3 返回扁平化列表 343

11.6.4 按多值和分词字段进行分组 343

11.6.5 分组性能 344

11.7 使用折叠查询解析器进行高效的字段折叠 344

11.8 本章小结 346

12 搭建Solr生产环境 347

12.1 编写一份Solr的分发版 347

12.2 部署Solr 348

12.2.1 编译自定义的Solr分发版 348

12.2.2 在应用程序中内嵌Solr 349

12.3 硬件和服务器配置 350

12.3.1 内存和固态硬盘 350

12.3.2 JVM设置 351

12.3.3 索引切换 352

12.3.4 实用Solr系统配置技巧 355

12.4 数据获取策略 357

12.5 分片和复制 361

12.5.1 分片策略 361

12.5.2 复制策略 364

12.6 Solr内核管理 368

12.7 管理服务器集群 374

12.7.1 负载均衡器和Solr健康检查 374

12.7.2 通用配置vs.自定义配置 375

12.8 Solr的查询与交互 378

12.8.1 REST API 378

12.8.2 可用的Solr客户端库 378

12.8.3 使用SolrJ 379

12.9 监控Solr的性能 383

12.9.1 Solr的插件/统计页 383

12.9.2 Solr缓存性能 387

12.9.3 从请求处理器和MBeans获取统计信息 388

12.9.4 外部监控选项 389

12.9.5 Solr日志 390

12.9.6 加载测试 390

12.10 不同Solr版本之间的升级 391

12.11 本章小结 392

第3部分 Solr进阶 393

13 SolrCloud 394

13.1 SolrCloud上手 395

13.1.1 在云模式下启动Solr 395

13.1.2 SolrCloud架构的驱动因素 400

13.2 核心概念 405

13.2.1 集合vs.内核 405

13.2.2 ZooKeeper 406

13.2.3 确定分片和副本的数量 410

13.2.4 集群状态管理 411

13.2.5 确定分片代表 412

13.2.6 SolrCloud的重要配置 413

13.3 分布式索引 416

13.3.1 将文档分配给分片 417

13.3.2 添加文档 418

13.3.3 近实时搜索 421

13.3.4 节点恢复过程 422

13.4 分布式搜索 423

13.4.1 多阶段查询流程 423

13.4.2 分布式搜索的局限性 425

13.5 集合API 425

13.5.1 创建集合 426

13.5.2 集合别名 429

13.6 基本系统管理任务 431

13.6.1 配置更新 432

13.6.2 滚动重启 432

13.6.3 重启故障节点 433

13.6.4 节点X处于活跃状态吗 433

13.6.5 新增副本 434

13.6.6 异地备份 434

13.7 高级主题 435

13.7.1 自定义散列 435

13.7.2 分片分割 436

13.8 本章小结 438

14 多语种搜索 439

14.1 为什么语种分析很重要 440

14.2 词干提取vs.词形还原 441

14.3 词干提取实战 442

14.4 处理边界情况 447

14.4.1 KeywordMarkerFilterFactory 448

14.4.2 StemmerOverrideFilterFactory 448

14.5 Solr支持的语种库 449

14.5.1 特定语种的分析器 449

14.5.2 基于词典的词干提取(Hunspell) 452

14.6 在多语种中搜索内容 453

14.6.1 每种语言一个独立字段 453

14.6.2 每个语种构建单独的索引 459

14.6.3 支持多语种的单个字段 462

14.6.4 创建一个字段类型来处理支持多语种的单个字段 463

14.7 语种识别 475

14.7.1 语种识别更新处理器 475

14.7.2 在一个字段中动态分配语种检测分析器 482

14.8 本章小结 488

15 复杂查询操作 489

15.1 函数查询 490

15.1.1 函数语法 490

15.1.2 函数的搜索 492

15.1.3 以字段形式返回函数 494

15.1.4 函数排序 495

15.1.5 Solr的可用函数集 496

15.1.6 自定义函数 502

15.2 地理空间搜索 507

15.2.1 搜索附近的一个点 507

15.2.2 高级地理空间搜索 513

15.3 分面透视 523

15.4 引用外部数据 526

15.5 跨文档和跨索引的连接 528

15.6 使用Solr做大数据分析 531

15.7 本章小结 532

16 精通相关度 533

16.1 相关度调整的影响 534

16.2 相关度计算的调试 535

16.3 提升相关度 541

16.3.1 字段提升 541

16.3.2 词项提升 543

16.3.3 负载提升 544

16.3.4 函数提升 545

16.3.5 词项邻近度提升 547

16.3.6 提升重要文档的相关度 549

16.4 可插拔的相似度的类实现 552

16.5 个性化搜索与推荐 553

16.5.1 搜索vs.推荐 554

16.5.2 基于属性的匹配 554

16.5.3 分层匹配 556

16.5.4 更多类似结果 558

16.5.5 基于概念的匹配 563

16.5.6 地理位置的匹配 568

16.5.7 协同过滤 569

16.5.8 混合方式 573

16.6 塑造个性化搜索体验 574

16.7 开展相关度实验 574

16.8 本章小结 577

附录A 与Solr代码库打交道 578

附录B 语种字段类型配置 587

附录C 有用的数据导入配置 593