目 录
前言
第1章 Elasticsearch开发搜索引擎应用1
1.1 搜索引擎开发需求1
1.2 准备开发环境1
1.2.1 Windows命令行cmd1
1.2.2 在Windows下使用Java3
1.2.3 Linux终端5
1.2.4 在Linux下使用Java9
1.2.5 Eclipse集成开发环境10
1.3 了解Elasticsearch10
1.3.1 JSON数据格式11
1.3.2 Elasticsearch基本概念12
1.3.3 HTTP协议13
1.4 Elasticsearch安装和配置16
1.4.1 安装Elasticsearch16
1.4.2 运行Elasticsearch作为服务进程19
1.5 实现一个简单的网站搜索21
1.5.1 定义索引结构23
1.5.2 导入数据26
1.5.3 查询API27
1.5.4 实现搜索界面29
1.6 本章小结35
第2章 开发中文搜索引擎36
2.1 中文分词原理36
2.1.1 最长匹配方法36
2.1.2 自己写分析器42
2.1.3 概率语言模型的分词方法44
2.1.4 中文分词插件原理52
2.1.5 开发中文分词插件54
2.1.6 支持Elasticsearch的插件57
2.1.7 中文分析器提供者59
2.1.8 字词混合索引61
2.2 提高分词准确度63
2.3 本章小结65
第3章 Mapping详解66
3.1 索引模式66
3.1.1 创建模式66
3.1.2 修改模式68
3.2 Mapping数据类型69
3.3 Mapping参数70
3.4 动态Mapping71
3.4.1 使用动态Mapping72
3.4.2 实现原理72
3.5 本章小结74
第4章 深入源码分析75
4.1 Lucene源码分析75
4.1.1 使用Lucene75
4.1.2 Ivy管理依赖项77
4.1.3 源码结构介绍77
4.1.4 并发控制82
4.2 启动搜索服务88
4.3 Guice框架89
4.4 日期和时间库——Joda-Time91
4.5 Transport模块91
4.6 线程池92
4.7 模块93
4.8 Netty通信框架93
4.9 缓存94
4.10 分布式95
4.11 Zen发现机制95
4.12 联合搜索97
4.13 JVM字节码98
4.13.1 编译代码99
4.13.2 同步相关指令99
4.14 本章小结100
第5章 提高搜索相关性102
5.1 向量空间检索模型102
5.2 BM25检索模型105
5.2.1 使用BM25检索模型108
5.2.2 参数调优108
5.3 学习评分109
5.3.1 基本原理109
5.3.2 准备数据110
5.3.3 Elasticsearch学习排名112
5.4 查询意图识别112
5.5 图像特征提升检索体验113
5.6 本章小结116
第6章 搜索界面开发118
6.1 使用Searchkit实现搜索界面118
6.2 Spring Boot入门122
6.2.1 可执行的WAR125
6.2.2 spring-boot-devtools模块实现热部署136
6.3 Java模板引擎Pebble介绍136
6.4 通过Spring-data-elasticsearch 项目访问Elasticsearch141
6.5 REST基本概念149
6.6 使用Vue.js开发搜索界面154
6.7 使用Vue.js Paginator插件实现翻页157
6.8 实现搜索接口161
6.8.1 编码识别161
6.8.2 布尔搜索163
6.8.3 搜索结果重定向164
6.8.4 搜索结果排序165
6.8.5 实现相似文档搜索166
6.9 Suggester搜索词提示167
6.9.1 拼音提示169
6.9.2 部署总结169
6.9.3 相关搜索170
6.9.4 再次查找172
6.9.5 搜索日志172
6.10 Word2vec挖掘相关搜索词174
6.11 部署网站179
6.11.1 部署到Web服务器179
6.11.2 防止攻击181
6.12 使用Rust开发搜索界面184
6.13 本章小结184
第7章 Elastic栈系统监控186
7.1 管理Elasticsearch集群186
7.1.1 写入权限控制187
7.1.2 使用X-Pack188
7.1.3 快照189
7.2 Logstash数据处理工具190
7.2.1 使用Logstash190
7.2.2 插件192
7.2.3 数据库输入插件192
7.2.4 开发插件193
7.3 Filebeat文件收集器193
7.4 消息过期194
7.5 Kibana可视化平台195
7.6 Flume日志收集系统196
7.7 Kafka分布式流平台197
7.8 Graylog日志管理平台198
7.9 本章小结202
第8章 案例分析204
8.1 双语句对搜索204
8.1.1 爬虫抓取双语句对204
8.1.2 英文分词205
8.1.3 句子切分205
8.1.4 标注词性207
8.1.5 词对齐209
8.1.6 索引数据213
8.2 内容管理系统站内检索214
8.2.1 MySQL数据库214
8.2.2 RESTful API管理索引215
8.2.3 自动客服机器人217
8.3 搜索文档225
8.3.1 爬虫抓取信息225
8.3.2 在Linux下使用.NET233
8.3.3 NEST客户端235
8.4 本章小结239
参考文献240
展开