首页>参考读物>计算机科学与技术>综合

Solr权威指南:下卷
作者 : 兰小伟 著
丛书名 : 实战
出版日期 : 2017-11-06
ISBN : 978-7-111-58207-6
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 326
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
本书作者是国内最早接触Solr的一批人之一,多年一直在Solr的研究、实践和布道的路上不遗余力、乐此不彼。本书立足全球视野,综合Solr技术的最新发展和应用、从业人员的学习曲线,以及中英文资料的供给情况,给自己设定了一个极高的目标:力争在内容的全面性、系统性、深浅度和实战性上超越所有的同类书。从完成的结果上来看,我们的目标接近完成,Solr的基础知识、核心技术、进阶知识和扩展知识悉数包括在内。
全书一共16章,分为上下两卷:
上卷(第1~10章)
全面、系统的讲解了Solr的基础知识和核心技术。包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的内部工作机制。
下卷(第11~16章)
细致、深入地讲解了Solr的高级知识和拓展知识。
高级知识部分包括:Solr的高级查询及其各种查询技巧,如函数查询、地理空间查询、Facet嵌套等;SolrJ、SolrCloud、Spring Data Solr的使用详解和工作原理;Solr的多种性能优化技巧,如索引的性能优化、缓存的性能优化、查询的性能优化、JVM以及Web容器的优化,以及操作系统级别的优化。
拓展知识中首先讲解了Solr的一些比较生僻的知识点,如伪域、多语种索引支持、安全认证,以及Solr 6.x中的SQL接口和Streaming表达式等;然后讲解了Solr与MapReduce、HDFS、Hbase、Kafka、Flume、Storm、Spark等大数据技术的集成和结合使用。

图书特色

中国Solr领域的资深专家和布道师撰写,权威性毋庸置疑。
以实战为导向,全面、系统、细致、深入地讲解Solr的基础知识、核心技术、进阶知识和扩展知识。

封底
Solr是一个构建在Apache Lucene上的流行的、快速的、开源的企业搜索平台,它的主要功能包括强大的全文搜索、命中高亮、多维度查询与分析统计、丰富的文档解析、地理空间搜索、大量的REST API以及并行SQL。Solr是安全的、高度可伸缩的、可自动容错的分布式索引和搜索的企业级解决方案,并为世界上许多高流量的internet站点提供了全文搜索和导航的技术支持并备受欢迎。
Solr在企业内一个典型的应用场景就是电商商品搜索、类别导航区块、属性过滤区块、搜索框自动联想,等等。当下已是大数据时代,企业的业务数据量呈TB级增长,对于数据的搜索需求会愈加强烈,对于低成本的互联网企业,Solr的使用诉求也会更加普遍。
对于历史数据的查询,在数据量还不具规模的情况下,一般采用传统关系型数据库自带的索引功能即可实现高效的数据查询。但当数据上升到一定规模时,或许你会想到使用HBase数据库来救急,然而HBase目前只支持针对rowkey的一级索引,尚且不支持二级索引,此时Solr+Hbase的珠联璧合就可以完美打破这一局限性。但Solr的强大不仅如此,尤其当你足够了解Solr之后。
本书采用浅显易懂的语言加以适当的配图为你详细解读Solr的每个技术点,让其中涉及的每个原理、机制都不再晦涩难懂。理论结合实践才能出真知,案例驱动的方式贯穿本书始终,希望读者能够多上机实践书中的每个示例,遵循“理解为主,实践为辅”的学习原则,学以致用并在自己所在公司企业内部部署Solr,充分施展Solr的威力,从而体现自己的个人价值。


本书作者是国内最早接触Solr的技术专家之一,多年一直在Solr的研究、实践和布道的路上不遗余力、乐此不彼。本书立足全球视野,综合Solr技术的最新发展和应用、从业人员的学习曲线,以及中英文资料的供给情况,给自己设定了一个极高的目标:力争在内容的全面性、系统性、深浅度和实战性上超越所有的同类书。从完成的结果上来看,我们的目标接近完成,Solr的基础知识、核心技术、进阶知识和扩展知识悉数包括在内。
全书一共16章,分为上下两卷:
上卷(第1~10章)
全面、系统地讲解了Solr的基础知识和核心技术。包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的内部工作机制。
下卷(第11~16章)
细致、深入地讲解了Solr的高级知识和拓展知识。
高级知识部分包括:Solr的高级查询及其各种查询技巧,如函数查询、地理空间查询、Facet嵌套等;SolrJ、SolrCloud、Spring Data Solr的使用详解和工作原理;Solr的多种性能优化技巧,如索引的性能优化、缓存的性能优化、查询的性能优化、JVM和Web容器的优化,以及操作系统级别的优化。
拓展知识中首先讲解了Solr的一些比较生僻的知识点,如伪域、多语种索引支持、安全认证,以及Solr 6.x中的SQL接口和Streaming表达式等;然后讲解了Solr与MapReduce、HDFS、Hbase、Kafka、Flume、Storm、Spark等大数据技术的结合使用的集成方法。


兰小伟(网名:益达) 资深Java工程师,在Java技术上有很深的积累和造诣。国内较早接触Solr的技术专家之一,长期致力于Solr的技术研究、实践和生产环境部署,是Solr社区的积极参与者和实践者,以让Solr技术能够在中国得到广泛应用不遗余力并乐此不疲。
现就职于国美金融,曾就职于各种大大小小的创业型公司。个人技术涉猎广泛,除了Java之外,对JQuery、ExtJS、AngularJS等前端技术也有研究。
技术宅,外表高冷安静,内心细腻感性,好文墨喜交友但不善交际。为人低调谦和,乐于助人,愿与各位志同道合者一同交流学习。

上架指导

计算机\程序设计

封底文字

Solr是一个构建在Apache Lucene上的流行的、快速的、开源的企业搜索平台,它的主要功能包括强大的全文搜索、命中高亮、多维度查询与分析统计、丰富的文档解析、地理空间搜索、大量的REST API以及并行SQL。Solr是安全的、高度可伸缩、可自动容错的分布式索引和搜索的企业级解决方案,并为世界上许多高流量的internet站点提供了全文搜索和导航的技术支持并备受欢迎。
Solr在企业内的一个典型的应用场景就是电商商品搜索、类别导航区块、属性过滤区块、搜索框自动联想等等。当下已是大数据时代,企业的业务数据量呈TB级增长,对于数据的搜需求会愈加强烈,对于低成本的互联网企业,Solr的使用诉求会更加普遍。
对于历史数据的查询,在数据量还不具规模的情况下,一般采用传统的关系型数据库自带的索引功能即可实现高效的数据查询。但当数据上升到一定规模时,或许你会想到使用HBase数据库来救急,然而HBase目前只支持针对rowkey的一级索引,尚且不支持二级索引,此时Solr+Hbase的珠联璧合就可以完美打破这一局限性。但Solr的强大不仅如此,尤其当你足够了解Solr之后。
本书采用浅显易懂的语言配以适当的配图为你详细解读Solr的每个技术点,让其中涉及到的每个原理、机制都不再晦涩难懂。理论结合实践才能出真知,案例驱动的方式贯穿本书始终,希望读者能够多上机实践书中的每个示例,遵循“理解为主,实践为辅”的学习原则,学以致用并在自己所在公司企业内部部署Solr,充分施展Solr的威力,从而体现自己的个人价值。

图书序言

Apache Solr是使用最广泛的全文检索解决方案,大部分网站都在使用Solr来实现搜索功能。然而国内关于Solr的资料太少,无奈我只能一点点地啃Solr官方提供的User Guide PDF文档、Solr Wiki以及一些纯英文的技术书籍,希望能够借由本书将我学习积累的所有经验倾情传授给那些由于学习Solr曲线太陡峭而束手无策的同学们。本书致力于帮助Java开发人员更简单、深入地学习Solr。同时本书还提供了随书源码,其中包含大量可运行的示例代码。本书与随书源码搭配在一起学习会事半功倍!由于目前大数据、云计算的发展如火如荼,各种大数据生态框架如雨后春笋般涌现,给人一种无形的压力。为此,本书也介绍了Solr与大数据框架的集成,如果你正好有这方面的需求,希望本书能够给你带来帮助。
为什么写这本书
转眼间,我已经跌跌撞撞走过了5个年头,由起初的那个Java迷途小书童变身为程序员届的一根老油条,不由感慨万千。由于深谙一个非高校毕业的“正规军”一路走来有多么的艰辛,因此我一直秉持爱开源、爱分享的个性。这么多年来帮助过的程序员太多太多,本着一颗乐于助人的心,我不想大家重走我的弯路。从2015年3月中旬开始,我在ITEye技术社区发布与Lucene和Solr相关的技术博客,深受大家喜爱。每天联系、咨询我问题的网友越来越多。疲于应付的我,开始意识到仅靠一个人这样一对一地指导是行不通的。而且刚好Solr这方面的中文技术书籍在中国还是一片空白,于是萌生了写一本Solr中文书籍的想法,希望能够帮助更多的Solr技术爱好者。
2015年8月我联系到了华章的杨福川,向他提出了写这本书的想法,得到了他的大力支持。我深知自己过往没有显赫耀眼的工作经历,在一些前辈面前还只是一个晚辈。因此,在创作本书的过程中,查阅了Solr官网提供的Apache-Solr-Ref-Guide、Solr Wiki,并通读了《Solr in action》《Apache Solr 4 Cookbook》《Apache Solr Essentials》《Apache Solr High Performance》等英文技术书籍。为了能够编写Solr与大数据集成相关章节,我又耗费了大量时间通读了《Apache Flume Distributed Log Collection for Hadoop》《Hadoop in Action》《HBase in Action》《Learning Spark》等大数据相关的英文技术书籍。写作本书的过程也成为本人学习提升的过程,为此我花费了整整1年的时间。资历尚浅仍可以通过自身努力来弥补,所以我时时刻刻以严谨缜密的态度对待写进书里的每一段文字,除了怀揣着对技术的一种敬畏之情,我知道我还必须为读者负责。
然而造化弄人,在2016年的2月份,我的颈部莫名其妙长了一个肿瘤,这严重影响了我的身心健康。由于辗转于北京协和医院、解放军总医院等地投医救治,所以这本书的编写工作不得不临时中断。还好我没有放弃,于是在修养了半年之后,又进入了“挑灯夜战”的状态,开始以夜继日地赶稿子。因为已经立下了写书的豪言壮志,所以再苦再累我也是要写完的!由于生病,当初所在的公司要求我立即停薪修养,在看尽了世态炎凉之后,我毅然选择了辞职,打算专职将这本书写好,给读者一个交代。没有了经济来源,只靠自己多年来的积蓄维持生活。我顶着巨大的压力,在大病初愈的情况下,决定倾注全部精力打造这本书。很庆幸我坚持下来了。每天叫醒我的不是闹钟不是鸡汤,也不是其他竞争对手,而是我的决心,因为父母已两鬓白发,快要三十的我还孑然一身。所以我不能虚度光阴,需要为了我爱的人和爱我的人努力奋斗,从而改善他们的生活。这本书也算是给自己30岁生日提前备下的一份礼物,并借以纪念不悔的青春岁月。我知道和我有着类似经历的同学太多太多,因此希望这本书能够为学习Solr的你们带来帮助和鼓励:定好一个Target,就永远不要放弃!
准备工作
随书提供了大量的示例代码(本书随书示例源码下载地址:https://github.com/yida-lxw/solr-book),其中涉及MongoDB、ZooKeeper、Hadoop、HBase、Flume、Kafka、Storm、Spark、Scala等知识点,不仅限于Solr,所以对于Java初学者而言会有一定压力。尽管书中提供了部分大数据框架的集群搭建步骤,但是由于篇幅的限制不可能面面俱到,你还是需要另外查阅其他相关书籍或资料来补充大数据这方面的知识。由于随书源码是基于Maven构建的,因此你还需要掌握Maven的基本使用方法。为了尽最大努力满足大部分用户的需求,所以从第14章开始我将以Solr 6.2.1版本为例进行讲解,而Solr6.x是要求JDK 1.8+版本的,那么在学习本书之前,你需要提前安装好JDK 1.7和JDK 1.8。如果你有将Solr部署在Tomcat下的需求,那么你还应安装Tomcat环境。对于企业而言,SolrCloud集群通常会部署在Linux环境下,因此本书SolrCloud部分是以CentOS 6.5为例进行讲解的,或许你还需要掌握Linux操作系统的基础知识以及一些Linux的常用命令。另外,由于Solr是基于Lucene构建的,因此你最好拥有一定的Lucene基础再来学习本书内容会感觉更轻松。因为本书自始至终是以由浅入深的原则进行编写的,尽量细致入微地讲解每一步。当然,Solr源码是使用Java编写的,这也要求你能够熟练掌握Java编程语言的知识,并拥有良好的编码基本功以及编程悟性。而Solr中的数据往往来自于关系型数据库,因此你最好是对关系型数据库有一定的了解。
如何阅读本书
全书分为上下两卷,总共16章,涵盖了Solr各个方面的知识点。本书从前到后按内容的难易程度以循序渐进的方式呈现出来。因此你只需要拥有足够的毅力将它阅读完,当然最好是能够边读边上机实践,就可以掌握Solr。此外每章之间都是相互独立的,如果你对于某章的内容已经非常熟悉,那么可以直接跳过选择感兴趣的章节进行学习。当然还是建议大家能够通读本书,系统学习Solr,这样才会对Solr有一个更完整的理解,为你日后从事Solr相关的开发工作打下夯实的基础。本书每章开头部分都列举了该章的主要知识点,可以让你快速了解本章能够学习到的内容。虽然本书中演示的示例代码在随书源码中都可以找到,但是我还是建议大家能够实际动手去敲一遍,毕竟只有亲手实践过,才能将遇到的各种问题真正悟透并彻底解决。这个过程虽是艰辛的,但也是深刻的,因为解决问题对于程序员来说就是积累经验的机会。
面向的读者
Java开发工程师;
架构师;
Solr技术爱好者;
各大高校或IT培训机构的学弟学妹们。
勘误与反馈
在编写本书的过程中,尽管我倾注了大量时间与精力,但是由于水平有限,书中难免会存在不足与疏漏之处,还请大家多多批评指正。如果你在阅读本书过程中有任何疑问或者建议需要向我反馈,可直接发送E-mail至736031305@qq.com或者添加个人微信(13476669029)联系我。
致谢
不知道你拿到这本书的时间是哪一年哪一个季节,但是对我来说,这都是我在自己30岁之前完成的一个最大的心愿。这是国内真真正正全面介绍Solr技术的第一本中文书籍,很开心我做到了。
想感谢的人很多,首先要谢谢爸妈,在我生病期间无微不至地照顾我,并无条件地支持我。
谢谢一路以来理解并鼓励我的朋友和粉丝们,是你们让我不断坚持前行。
谢谢机械工业出版社华章分社的杨福川、高婧雅、李艺在这一年当中对我写作的信任与帮助,没有你们辛勤的付出,就不可能有这本书的面市。非常开心和幸运能够与你们共同完成这样一本书籍。
谢谢我的Java启蒙老师习晨龙,是您带我进入了Java世界,从此我在汲取知识的路上甘之如饴。
谢谢在这么多年的工作中所有帮助过我的同事,我会一直记得你们。
最后需要感谢的还是我自己,感谢曾经的年少轻狂,感谢一直都存在的梦想,对于梦想我从来没有也永远不会放弃。所以如果你还有梦想,为了你爱的人,为了你自己,请永远不要放弃!

图书目录

序 言
第11章 Solr高级查询 1
11.1 Solr函数查询 2
11.1.1 Function语法 2
11.1.2 使用函数查询 4
11.1.3 将函数计算值作为“伪域”返回 5
11.1.4 根据函数进行排序 6
11.1.5 Solr中的内置函数 7
11.1.6 自定义函数 13
11.2 Solr地理空间查询 16
11.2.1 Solr地理空间简单查询 17
11.2.2 Solr地理空间高级查询 19
11.3 Pivot Facet 29
11.4 Solr Subfacet 31
11.4.1 Subfacet语法 32
11.4.2 Subfacet复杂示例 32
11.5 Solr Facet Function 34
11.5.1 聚合函数 35
11.5.2 聚合函数与Subfacet结合 35
11.5.3 Solr中的Percentile函数 36
11.6 JSON Facet API 39
11.6.1 JSON Facet API简介 39
11.6.2 JSON Facet简单使用 40
11.6.3 Facet类型 41
11.6.4 JSON Facet语法 41
11.6.5 Term Facet 42
11.6.6 Query Facet 43
11.6.7 Range Facet 43
11.6.8 Multi-Select Facet 44
11.7 Interval Facet 47
11.8 Hierarchical Facet 48
11.9 Solr Stats组件 50
11.10 Solr Terms组件 52
11.11 SolrTerm Vector组件 54
11.12 Solr Query Elevation组件 56
11.13 Solr Result Clustering组件 59
11.14 本章总结 62
第12章 Solr查询进阶篇 63
12.1 Solr深度分页 63
12.2 Solr自定义排序 66
12.3 Solr Join查询 70
12.3.1 跨Core Join 71
12.3.2 跨Document Join 73
12.3.3 Block Join 74
12.3.4 Block Join Facet 77
12.4 深入Solr相关性评分 79
12.4.1 Field权重 79
12.4.2 Term权重 80
12.4.3 Payload权重 80
12.4.4 Function权重 81
12.4.5 邻近Term权重 82
12.4.6 Document权重 83
12.4.7 自定义Similarity插件 84
12.5 Solr NRT近实时查询 86
12.6 Solr Real-time Get查询 88
12.7 Solr评分查询 90
12.8 Solr MoreLikeThis组件 91
12.9 Solr自定义Query Parser 95
12.10 本章总结 97
第13章 SolrJ 98
13.1 什么是SolrJ 98
13.2 SolrJ的环境依赖与配置 99
13.3 SolrClient介绍 101
13.4 SolrJ简单使用 103
13.5 SolrJ查询 106
13.6 使用SolrJ高效导出数据 110
13.7 SolrJ增量更新 111
13.8 SolrJ原子更新 112
13.9 使用SolrJ管理Core 116
13.9.1 创建Core 117
13.9.2 卸载Core 118
13.9.3 加载Core 119
13.9.4 交换Core 119
13.9.5 重命名Core 120
13.9.6 查看Core状态 120
13.9.7 Core合并 120
13.9.8 Core分裂 121
13.10 使用SolrJ管理schema.xml 122
13.10.1 Field管理 122
13.10.2 FieldType管理 127
13.10.3 Schema管理 130
13.10.4 Schema管理的事务性批量操作 132
13.11 使用SolrJ操作JSON Request API 133
13.12 使用Spring Data Solr 136
13.12.1 Spring Data Solr环境搭建 136
13.12.2 Spring Data Solr的CRUD 138
13.12.3 Spring Data Solr中的查询 141
13.12.4 Spring Data Solr中的Repository详解 143
13.12.5 Spring Data Solr中Solr-Template工具类详解 146
第14章 SolrCloud 153
14.1 SolrCloud快速入门 153
14.2 SolrCloud工作原理 156
14.2.1 SolrCloud的核心概念 156
14.2.2 SolrCloud中的Shard 157
14.2.3 Collection VS Core 158
14.2.4 索引文档路由 161
14.2.5 Shard的几种状态 162
14.2.6 Replica的几种状态 162
14.2.7 Shard分割 163
14.2.8 SolrCloud里的自动提交 163
14.2.9 SolrCloud的分布式查询请求 164
14.2.10 读写端的自动容错 171
14.2.11 Zookeeper 173
14.3 SolrCloud集群搭建 182
14.3.1 在Tomcat容器下搭建SolrCloud集群 183
14.3.2 在Jetty容器下搭建SolrCloud集群 189
14.4 SolrCloud的基本操作 194
14.4.1 Solr环境变量设置 194
14.4.2 创建Collection 195
14.4.3 删除Collection 196
14.4.4 启动Solr 196
14.4.5 停止Solr 197
14.4.6 查看Solr状态 198
14.4.7 Collection健康检测 198
14.4.8 管理Zookeeper上的配置文件 199
14.5 SlorCloud配置详解 201
14.5.1 solr.xml详解 201
14.5.2 zoo.cfg详解 204
14.6 SolrCloud分布式索引 205
14.6.1 添加索引文档到SolrCloud 205
14.6.2 SolrCloud里的近实时查询 206
14.7 SolrCloud分布式查询 207
14.8 SolrCloud Collection API 208
14.8.1 Collection常用操作API 209
14.8.2 Shard常用操作API 212
14.8.3 Replica常用操作API 215
14.8.4 集群管理API 216
14.9 Solr索引主从复制 217
14.9.1 索引复制简介 217
14.9.2 索引复制的术语 218
14.9.3 索引复制的配置 219
14.9.4 配置索引复制中继器 221
14.9.5 索引复制工作机制 222
14.9.6 ReplicationHandler HTTP接口 223
14.10 跨数据中心的索引复制(CDCR) 224
14.10.1 什么是CDCR 224
14.10.2 CDCR的Push机制 225
14.10.3 CDCR搭建 226
14.10.4 CDCR配置详解 228
14.10.5 CDCR的HTTP接口 229
14.10.6 CDCR存在的限制 229
14.11 本章总结 230
第15章 Solr性能优化 231
15.1 Schema设计的注意事项 232
15.2 Solr索引更新与提交的优化建议 233
15.3 索引合并性能调优 234
15.4 索引优化的注意事项 235
15.5 Solr缓存 235
15.5.1 Solr缓存的常见配置参数 236
15.5.2 Filter缓存 236
15.5.3 Document缓存 237
15.5.4 QueryResult缓存 237
15.5.5 FieldValue缓存 237
15.5.6 HTTP缓存 238
15.5.7 缓存相关的其他配置 238
15.6 Solr查询性能的优化建议 239
15.7 JVM以及Web容器的优化 242
15.8 操作系统级别的优化建议 249
15.9 本章总结 250
第16章 Solr扩展篇 251
16.1 Solr如何版本升级 251
16.2 Solr中的伪域 253
16.3 Solr多语种索引支持 255
16.4 Solr中自定义Redis缓存 257
16.5 Solr如何开启HTTPS 258
16.6 Solr安全认证 260
16.6.1 基础安全认证插件 260
16.6.2 Solr中的Authorization API 263
16.7 SolrCloud模式下使用Canal增量更新索引 264
16.8 Solr与MapReduce集成 270
16.9 Solr使用HDFS存储索引 271
16.10 使用Flume收集数据并索引至Solr 273
16.11 使用Solr实现HBase的二级索引 277
16.12 Solr与Kafka、Flume集成 282
16.13 使用Storm索引数据至Solr 286
16.14 Spark与Solr进行数据交互 291
16.15 Solr6中的SQL接口 297
16.15.1 Solr SQL架构 297
16.15.2 Solr SQL配置 299
16.15.3 发送Solr SQL请求 300
16.15.4 Solr SQL语法 301
16.15.5 Solr SQL客户端可视化工具的使用 302
16.16 Solr6中的Streaming表达式 304
16.16.1 Streaming语言基础 304
16.16.2 Streaming源函数 305
16.16.3 Streaming装饰函数 307
16.17 Solr常见问题解答 310

教学资源推荐
作者: 马玉春 刘杰民 王鑫 编著
作者: 刘粉林 刘九芬 罗向阳 等编著
作者: 许志闻 郭晓新 杨瀛涛 主编 王云霄 高占恒 徐长青 参编
参考读物推荐
作者: 郑志强 曹来京 孟永 编著
作者: (美)Francesco Cesarini, Simon Thompson 著