自己动手写分布式搜索引擎罗刚、崔智杰 pdf下载

自己动手写分布式搜索引擎罗刚、崔智杰 百度网盘pdf下载

作者:
简介:自己动手写分布式搜索引擎罗刚、崔智杰
出版社:
出版时间:2017-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

作  者:罗刚、崔智杰 著
定  价:59
出 版 社:清华大学出版社
出版日期:2017年09月01日
页  数:428
装  帧:简装
ISBN:9787302477082
本书介绍了分布式搜索引擎开发的原理与Java实现,主要包括全文检索的原理与实现、分布式算法与代码实现、SolrCloud和ElasticSearch的使用与原理等内容,并着重介绍了一种实现分布式中文搜索引擎的方法。 本书适合有Java程序设计基础的开发人员或者对分布式搜索引擎技术感兴趣的从业人员使用
目 录 章 搜索引擎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 FieldScoreQuery74 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 FST102 3.6 查询语法与解析102 3.6.1 JavaCC104 3.6.2 生成一个查询解析器114 3.6.3 简单的查询解析器114 3.6.4 灵活的查询解析器114 3.7 检索模型119 3.7.1 向量空间模型121 3.7.2 DFR125 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 Analyzer156 3.9.2 TokenStream162 3.9.3 定制Tokenizer164 3.9.4 重用Tokenizer166 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 Gamma174 3.10.3 PForDelta176 3.10.4 VSEncoding178 3.10.5 前缀压缩179 3.10.6 差分编码180 3.10.7 静态索引裁剪182 3.11 搜索中文182 3.11.1 Lucene切分原理185 3.11.2 Lucene中的Analyzer186 3.11.3 自己写Analyzer188 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 优化使用Lucene204 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 用于显示搜索结果的 Taglib234 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 第5章 Solr分布式搜索引擎297 5.1 Solr简介298 5.2 Solr基本用法299 5.2.1 Solr服务器端的配置与中文 支持300 5.2.2 数据类型304 5.2.3 解析器306 5.2.4 把数据放进Solr307 5.2.5 删除数据312 5.2.6 查询语法313 5.3 使用SolrJ313 5.3.1 Solr客户端与搜索界面313 5.3.2 Solr索引库的查找315 5.3.3 分类统计317 5.3.4 高亮319 5.3.5 同义词322 5.3.6 嵌入式Solr322 5.3.7 Spring实现的搜索界面323 5.3.8 索引分发331 5.3.9 Solr搜索优化333 5.4 从FAST Search移植到Solr336 5.5 Solr扩展与定制337 5.5.1 缺省查询337 5.5.2 插件338 5.5.3 Solr中字词混合索引338 5.5.4 相关检索340 5.5.5 搜索结果去重341 5.5.6 定制输入输出344 5.5.7 聚类348 5.5.8 分布式搜索348 5.5.9 分布式索引352 5.5.10 SolrJ查询分析器353 5.5.11 扩展SolrJ360 5.5.12 扩展Solr361 5.5.13 日文搜索364 5.5.14 查询Web图365 5.6 SolrNet367 5.6.1 使用SolrNet实现全文搜索367 5.6.2 实现原理370 5.6.3 扩展SolrNet371 5.7 Solr的PHP客户端373 5.8 Solr的其他客户端376 5.9 为网站增加搜索功能376 5.10 SolrCloud377 5.10.1 Zab协议377 5.10.2 ZooKeeper377 5.10.3 使用SolrCloud379 5.10.4 SQL查询380 5.11 Solr原理381 5.11.1 支持Solr的中文分词381 5.11.2 缓存技术383 5.12 本章小结384 第6章 ElasticSearch分布式搜索 引擎387 6.1 安装389 6.2 搜索集群390 6.2.1 Zen发现机制390 6.2.2 JGroups391 6.3 创建索引393 6.4 Java客户端接口396 6.4.1 创建索引398 6.4.2 插入数据398 6.4.3 索引库结构400 6.5 查询401 6.6 高亮显示405 6.7 分页406 6.8 中文搜索407 6.8.1 中文AnalyzerProvider407 6.8.2 字词混合索引409 6.9 分组统计412 6.10 与爬虫集成413 6.11 Percolate413 6.12 权限414 6.13 SQL支持415 6.14 本章小结419

内容简介

本书介绍了分布式搜索引擎开发的原理与Java实现,主要包括全文检索的原理与实现、分布式算法与代码实现、SolrCloud和ElasticSearch的使用与原理等内容,并着重介绍了一种实现分布式中文搜索引擎的方法。 本书适合有Java程序设计基础的开发人员或者对分布式搜索引擎技术感兴趣的从业人员使用
罗刚、崔智杰 著
罗刚,计算机软件硕士,毕业于吉林工业大学。2005年创立北京盈智星科技发展有限公司,2008年联合创立上海数聚软件公司。猎兔搜索创始人,当前猎兔搜索在北京、上海以及石家庄均设有研发部。他带领猎兔搜索技术开发团队先后开发出猎兔中文分词系统、猎兔文本挖掘系统,智能垂直搜索系统以及网络信息监测系统等,实现互联网信息的采集、过滤、搜索和实时监测,其开发的搜索软件日用户访问量万次以上。
     很多软件系统都需要对应的数据结构。信息检索中很常用的数据结构是倒排索引。全文索引如图2-1所示。 图2-1 以词为基础的全文索引     倒排索引就是一个词到文档列表的映射。用HashMap实现的一个简单的倒排索引代码如下。      public class InvertedIndex { Map> index = new HashMap>(); //词和这个词在文档中出现的位置信息 // 索引文档 public void indexDoc(String docName, ArrayList words) { i等
前 言          搜索引擎成为人们获取信息不可或缺的工具。大数据技术的发展推动了多机集群的分布式搜索引擎技术走向成熟。普通的机器就可以搭建分布式搜索引擎。一些开源的分布式搜索引擎系统在数据存储、数据分析等方面的功能越来越强大。本书希望用通俗易懂的语言,让任何对分布式搜索引擎技术感兴趣的读者都能够有所收获。     本书的很多内容来源于搜索引擎、自然语言处理、金融等领域的项目开发和教学实践。在此感谢开源软件的开发者们,他们无私的工作丰富了本书的内容。     本书的章介绍开发分布式搜索引擎所需要的基本算法;第2章介绍如何从头开始自己动手写一个简单的全文检索软件包;第3章介绍Lucene的基本使用方法及其原理;第4等