书籍详情
自己动手写分布式搜索引擎
作者:罗刚,崔智杰
出版社:清华大学出版社
出版时间:2017-09-01
ISBN:9787302477082
定价:¥59.00
购买这本书可以去
内容简介
本书介绍了分布式搜索引擎开发的原理与Java实现,主要包括全文检索的原理与实现、分布式算法与代码实现、SolrCloud和ElasticSearch的使用与原理等内容,并着重介绍了一种实现分布式中文搜索引擎的方法。 本书适合有Java程序设计基础的开发人员或者对分布式搜索引擎技术感兴趣的从业人员使用
作者简介
罗刚,计算机软件硕士,毕业于吉林工业大学。2005年创立北京盈智星科技发展有限公司,2008年联合创立上海数聚软件公司。猎兔搜索创始人,当前猎兔搜索在北京、上海以及石家庄均设有研发部。他带领猎兔搜索技术开发团队先后开发出猎兔中文分词系统、猎兔文本挖掘系统,智能垂直搜索系统以及网络信息监测系统等,实现互联网信息的采集、过滤、搜索和实时监测,其开发的搜索软件日用户访问量万次以上。
目录
第1章 搜索引擎 1
1.1 搜索引擎基本模块 2
1.2 开发环境 3
1.3 搜索引擎工作原理 4
1.3.1 网络爬虫 5
1.3.2 全文索引 5
1.3.3 搜索用户界面 8
1.3.4 分布式计算 9
1.3.5 文本挖掘 9
1.4 算法基础 9
1.4.1 折半查找 10
1.4.2 排序 10
1.4.3 最小生成树 12
1.5 软件工具 15
1.6 单元测试 15
1.7 本章小结 17
1.8 术语表 18
第2章 自己动手写全文检索 19
2.1 构建索引 22
2.2 生成索引文件 23
2.3 读入索引文件 25
2.4 查询 26
2.5 有限状态机 29
2.5.1 运算 29
2.5.2 编辑距离有限状态机 30
2.6 本章小结 32
第3章 Lucene的原理与应用 33
3.1 Lucene快速入门 34
3.1.1 创建索引 34
3.1.2 查询索引库 35
3.1.3 创建文档索引 36
3.1.4 查询文档索引 36
3.2 创建和维护索引库 37
3.2.1 设计索引库结构 37
3.2.2 创建索引库 38
3.2.3 向索引库中添加索引文档 40
3.2.4 删除索引库中的索引文档 43
3.2.5 更新索引库中的索引文档 44
3.2.6 关闭索引库 45
3.2.7 索引的优化与合并 45
3.2.8 灵活索引 46
3.2.9 索引文件格式 47
3.2.10 定制索引存储结构 49
3.2.11 写索引集成到爬虫 54
3.2.12 多线程写索引 56
3.2.13 分发索引 58
3.2.14 修复索引 61
3.3 查找索引库 61
3.3.1 查询过程 61
3.3.2 常用查询 64
3.3.3 基本词查询 65
3.3.4 模糊匹配 65
3.3.5 布尔查询 67
3.3.6 短语查询 69
3.3.7 跨度查询 71
3.3.8 FieldScoreQuery 74
3.3.9 排序 77
3.3.10 使用Filter筛选搜索结果 81
3.3.11 使用Collector筛选搜索
结果 82
3.3.12 遍历索引库 85
3.3.13 关键词高亮显示 88
3.3.14 列合并 91
3.3.15 关联内容(BlockJoinQuery) 92
3.3.16 查询大容量索引 94
3.4 读写并发 95
3.5 Lucene深入介绍 95
3.5.1 整体结构 96
3.5.2 索引原理 97
3.5.3 文档值 100
3.5.4 FST 102
3.6 查询语法与解析 102
3.6.1 JavaCC 104
3.6.2 生成一个查询解析器 114
3.6.3 简单的查询解析器 114
3.6.4 灵活的查询解析器 114
3.7 检索模型 119
3.7.1 向量空间模型 121
3.7.2 DFR 125
3.7.3 BM25概率模型 130
3.7.4 BM25F概率模型 136
3.7.5 统计语言模型 138
3.7.6 相关性反馈 140
3.7.7 隐含语义索引 140
3.7.8 学习评分 141
3.7.9 查询与相关度 142
3.7.10 使用Payload调整相关性 142
3.8 查询原理 146
3.8.1 布尔匹配 147
3.8.2 短语查询 150
3.8.3 索引统计 150
3.8.4 相关性 152
3.9 分析文本 155
3.9.1 Analyzer 156
3.9.2 TokenStream 162
3.9.3 定制Tokenizer 164
3.9.4 重用Tokenizer 166
3.9.5 有限状态转换 167
3.9.6 索引数值列 168
3.9.7 检索结果排序 171
3.9.8 处理价格 171
3.10 Lucene中的压缩算法 172
3.10.1 变长压缩 172
3.10.2 Gamma 174
3.10.3 PForDelta 176
3.10.4 VSEncoding 178
3.10.5 前缀压缩 179
3.10.6 差分编码 180
3.10.7 静态索引裁剪 182
3.11 搜索中文 182
3.11.1 Lucene切分原理 185
3.11.2 Lucene中的Analyzer 186
3.11.3 自己写Analyzer 188
3.11.4 Lietu中文分词 191
3.11.5 字词混合索引 191
3.12 搜索英文 196
3.12.1 英文分词 196
3.12.2 词性标注 199
3.12.3 原型化 201
3.13 索引数据库中的文本 202
3.14 优化使用Lucene 204
3.14.1 系统优化 204
3.14.2 查询优化 205
3.14.3 实现时间加权排序 207
3.14.4 词性标注 210
3.14.5 个性化搜索 213
3.15 实时搜索 213
3.16 语义搜索 215
3.16.1 发现同义词 215
3.16.2 垂直领域同义词 219
3.16.3 同义词扩展 219
3.16.4 语义标注 225
3.17 本章小结 225
3.18 术语表 226
第4章 搜索引擎用户界面 227
4.1 实现Lucene搜索 228
4.1.1 测试搜索功能 228
4.1.2 加载索引 229
4.2 搜索页面设计 231
4.2.1 Struts2实现的搜索界面 232
4.2.2 用于显示搜索结果的
Taglib 234
4.2.3 实现翻页 235
4.3 实现搜索接口 238
4.3.1 编码识别 238
4.3.2 布尔搜索 241
4.3.3 指定范围搜索 241
4.3.4 搜索结果排序 242
4.3.5 索引缓存与更新 243
4.4 实现分类统计视图 249
4.4.1 单值列分类统计 255
4.4.2 侧钻 256
4.5 实现相似文档搜索 257
4.6 实现AJAX搜索联想词 259
4.6.1 估计查询词的文档频率 259
4.6.2 搜索联想词总体结构 259
4.6.3 服务器端处理 260
4.6.4 浏览器端处理 265
4.6.5 拼音提示 267
4.6.6 部署总结 267
4.7 推荐搜索词 268
4.7.1 挖掘相关搜索词 268
4.7.2 使用多线程计算相关
搜索词 270
4.8 查询意图理解 271
4.8.1 拼音搜索 271
4.8.2 无结果处理 272
4.9 集成其他功能 272
4.9.1 拼写检查 272
4.9.2 分类统计 276
4.9.3 相关搜索 281
4.9.4 再次查找 284
4.9.5 搜索日志 284
4.10 查询分析 286
4.10.1 历史搜索词记录 286
4.10.2 日志信息过滤 286
4.10.3 信息统计 287
4.10.4 挖掘日志信息 289
4.10.5 查询词意图分析 290
4.11 部署网站 290
4.11.1 部署到Web服务器 290
4.11.2 防止攻击 292
4.12 手机搜索界面 295
4.13 本章小结 296
1.1 搜索引擎基本模块 2
1.2 开发环境 3
1.3 搜索引擎工作原理 4
1.3.1 网络爬虫 5
1.3.2 全文索引 5
1.3.3 搜索用户界面 8
1.3.4 分布式计算 9
1.3.5 文本挖掘 9
1.4 算法基础 9
1.4.1 折半查找 10
1.4.2 排序 10
1.4.3 最小生成树 12
1.5 软件工具 15
1.6 单元测试 15
1.7 本章小结 17
1.8 术语表 18
第2章 自己动手写全文检索 19
2.1 构建索引 22
2.2 生成索引文件 23
2.3 读入索引文件 25
2.4 查询 26
2.5 有限状态机 29
2.5.1 运算 29
2.5.2 编辑距离有限状态机 30
2.6 本章小结 32
第3章 Lucene的原理与应用 33
3.1 Lucene快速入门 34
3.1.1 创建索引 34
3.1.2 查询索引库 35
3.1.3 创建文档索引 36
3.1.4 查询文档索引 36
3.2 创建和维护索引库 37
3.2.1 设计索引库结构 37
3.2.2 创建索引库 38
3.2.3 向索引库中添加索引文档 40
3.2.4 删除索引库中的索引文档 43
3.2.5 更新索引库中的索引文档 44
3.2.6 关闭索引库 45
3.2.7 索引的优化与合并 45
3.2.8 灵活索引 46
3.2.9 索引文件格式 47
3.2.10 定制索引存储结构 49
3.2.11 写索引集成到爬虫 54
3.2.12 多线程写索引 56
3.2.13 分发索引 58
3.2.14 修复索引 61
3.3 查找索引库 61
3.3.1 查询过程 61
3.3.2 常用查询 64
3.3.3 基本词查询 65
3.3.4 模糊匹配 65
3.3.5 布尔查询 67
3.3.6 短语查询 69
3.3.7 跨度查询 71
3.3.8 FieldScoreQuery 74
3.3.9 排序 77
3.3.10 使用Filter筛选搜索结果 81
3.3.11 使用Collector筛选搜索
结果 82
3.3.12 遍历索引库 85
3.3.13 关键词高亮显示 88
3.3.14 列合并 91
3.3.15 关联内容(BlockJoinQuery) 92
3.3.16 查询大容量索引 94
3.4 读写并发 95
3.5 Lucene深入介绍 95
3.5.1 整体结构 96
3.5.2 索引原理 97
3.5.3 文档值 100
3.5.4 FST 102
3.6 查询语法与解析 102
3.6.1 JavaCC 104
3.6.2 生成一个查询解析器 114
3.6.3 简单的查询解析器 114
3.6.4 灵活的查询解析器 114
3.7 检索模型 119
3.7.1 向量空间模型 121
3.7.2 DFR 125
3.7.3 BM25概率模型 130
3.7.4 BM25F概率模型 136
3.7.5 统计语言模型 138
3.7.6 相关性反馈 140
3.7.7 隐含语义索引 140
3.7.8 学习评分 141
3.7.9 查询与相关度 142
3.7.10 使用Payload调整相关性 142
3.8 查询原理 146
3.8.1 布尔匹配 147
3.8.2 短语查询 150
3.8.3 索引统计 150
3.8.4 相关性 152
3.9 分析文本 155
3.9.1 Analyzer 156
3.9.2 TokenStream 162
3.9.3 定制Tokenizer 164
3.9.4 重用Tokenizer 166
3.9.5 有限状态转换 167
3.9.6 索引数值列 168
3.9.7 检索结果排序 171
3.9.8 处理价格 171
3.10 Lucene中的压缩算法 172
3.10.1 变长压缩 172
3.10.2 Gamma 174
3.10.3 PForDelta 176
3.10.4 VSEncoding 178
3.10.5 前缀压缩 179
3.10.6 差分编码 180
3.10.7 静态索引裁剪 182
3.11 搜索中文 182
3.11.1 Lucene切分原理 185
3.11.2 Lucene中的Analyzer 186
3.11.3 自己写Analyzer 188
3.11.4 Lietu中文分词 191
3.11.5 字词混合索引 191
3.12 搜索英文 196
3.12.1 英文分词 196
3.12.2 词性标注 199
3.12.3 原型化 201
3.13 索引数据库中的文本 202
3.14 优化使用Lucene 204
3.14.1 系统优化 204
3.14.2 查询优化 205
3.14.3 实现时间加权排序 207
3.14.4 词性标注 210
3.14.5 个性化搜索 213
3.15 实时搜索 213
3.16 语义搜索 215
3.16.1 发现同义词 215
3.16.2 垂直领域同义词 219
3.16.3 同义词扩展 219
3.16.4 语义标注 225
3.17 本章小结 225
3.18 术语表 226
第4章 搜索引擎用户界面 227
4.1 实现Lucene搜索 228
4.1.1 测试搜索功能 228
4.1.2 加载索引 229
4.2 搜索页面设计 231
4.2.1 Struts2实现的搜索界面 232
4.2.2 用于显示搜索结果的
Taglib 234
4.2.3 实现翻页 235
4.3 实现搜索接口 238
4.3.1 编码识别 238
4.3.2 布尔搜索 241
4.3.3 指定范围搜索 241
4.3.4 搜索结果排序 242
4.3.5 索引缓存与更新 243
4.4 实现分类统计视图 249
4.4.1 单值列分类统计 255
4.4.2 侧钻 256
4.5 实现相似文档搜索 257
4.6 实现AJAX搜索联想词 259
4.6.1 估计查询词的文档频率 259
4.6.2 搜索联想词总体结构 259
4.6.3 服务器端处理 260
4.6.4 浏览器端处理 265
4.6.5 拼音提示 267
4.6.6 部署总结 267
4.7 推荐搜索词 268
4.7.1 挖掘相关搜索词 268
4.7.2 使用多线程计算相关
搜索词 270
4.8 查询意图理解 271
4.8.1 拼音搜索 271
4.8.2 无结果处理 272
4.9 集成其他功能 272
4.9.1 拼写检查 272
4.9.2 分类统计 276
4.9.3 相关搜索 281
4.9.4 再次查找 284
4.9.5 搜索日志 284
4.10 查询分析 286
4.10.1 历史搜索词记录 286
4.10.2 日志信息过滤 286
4.10.3 信息统计 287
4.10.4 挖掘日志信息 289
4.10.5 查询词意图分析 290
4.11 部署网站 290
4.11.1 部署到Web服务器 290
4.11.2 防止攻击 292
4.12 手机搜索界面 295
4.13 本章小结 296
猜您喜欢