Solr权威指南 下卷[图书]
基本信息

内容简介
计算机书籍
本书以图文并茂的形式、通俗易懂的语言讲解了Solr使用中的各个知识点,能够帮助对Solr感兴趣的读者快速了解Solr。由于目前有关Solr相关技术的书籍全部都是英文版的,所以对于英文不太好而又极其需要快速学会使用Solr的读者来说,这是一个福音。下卷:主要针对中高端读者,重点介绍了关于Solr查询、SolrJ、SolrCloud、Solr性能优化等的相关知识。对于Solr查询,下卷主要针对的是高阶知识部分,包括使用游标实现高效的深度分页查询、实现对查询返回的查询结果集进行自定义排序、使用相关性权重来提高查询返回结果集的相关性、FunctionQuery的使用方法、FunctionQuery的自定义方法等;对于SolrJ、SolrCloud的介绍,则均是从基础概念开始,逐步深入到具体的使用和管理方法;对于Solr性能优化,则主要集中在注意事项、具体建议等实操部分的介绍。在全书后,还单独利用一章对之前没涉及的零散内容进行集中介绍,包括版本升级、自定义伪域、自定义Redis缓存、流式处理等内容。
目录
第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
序言
为什么写这本书
转眼间,我已经跌跌撞撞走过了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技术的第一本中文书籍,很开心我做到了。
想感谢的人很多,首先要谢谢爸妈,在我生病期间无微不至地照顾我,并无条件地支持我。
谢谢一路以来理解并鼓励我的朋友和粉丝们,是你们让我不断坚持前行。