首页>参考读物>计算机科学与技术>软件与程序设计

Solr权威指南:上卷
作者 : 兰小伟 著
丛书名 : 实战
出版日期 : 2017-11-06
ISBN : 978-7-111-58172-7
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 438
开本 : 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 Guid 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世界,从此我在汲取知识的路上甘之如饴。
谢谢在这么多年的工作中所有帮助过我的同事,我会一直记得你们。
最后需要感谢的还是我自己,感谢曾经的年少轻狂,感谢一直都存在的梦想,对于梦想我从来没有也永远不会放弃。所以如果你还有梦想,为了你爱的人,为了你自己,请永远不要放弃!

图书目录

序言
第1章 初识Solr 1
1.1 Solr是什么 1
1.2 Solr的历史 2
1.3 为什么要选择Solr 2
1.4 Solr功能预览 3
1.5 Solr下载 3
1.6 Solr学习资源 5
1.7 Windows平台下部署Solr 7
1.7.1 部署Solr至Jetty 7
1.7.2 部署Solr至Tomcat 13
1.8 Linux平台下部署Solr 16
1.9 玩转post.jar 20
1.10 在Eclipse中编译Solr源码 25
1.11 本章总结 27
第2章 Solr基础 28
2.1 Solr Core 28
2.1.1 Solr Core简介 28
2.1.2 Core的基本管理 30
2.1.3 Core Http接口 35
2.1.4 添加索引至Core 36
2.2 Solr DIH 38
2.2.1 索引文件夹下的文本文件 38
2.2.2 索引JSON/XML/CSV文件 42
2.2.3 使用Tika索引Word/Excel/PDF 45
2.2.4 索引网络上的远程文件 52
2.2.5 索引XML文件 55
2.2.6 从数据库中导入数据至Solr 57
2.2.7 Solr DIH总结 62
2.3 Solr Full Import全量导入 78
2.4 Solr Delta-import增量导入 80
2.5 Solr索引 85
2.5.1 Lucene索引原理 85
2.5.2 Lucene中常见术语详解 87
2.5.3 创建Solr索引 98
2.5.4 Solr Cell 99
2.5.5 Solr索引去重检测 102
2.5.6 Solr更新请求处理链 104
2.5.7 Solr原子更新 105
2.5.8 使用Luke查看索引 107
2.6 本章总结 109
第3章 Solr配置 110
3.1 solr.xml配置详解 110
3.2 solrconf ig.xml配置详解 112
3.3 schema.xml配置详解 139
3.3.1 Solr Schema设计思想 139
3.3.2 Solr眼里的世界 139
3.3.3 域分词 140
3.3.4 Solr的schema文件 140
3.3.5 Solr的域类型 141
3.3.6 Solr的域 153
3.3.7 Schema API 157
3.3.8 Schemaless Mode 165
3.4 data-conf ig.xml配置详解 167
3.5 zoo.cfg配置详解 169
3.6 本章总结 169
第4章 Solr分词 170
4.1 分词的基本概念 170
4.1.1 理解Analyzer 170
4.1.2 理解Tokenizer 171
4.1.3 理解TokenFilter 172
4.2 Solr分词器 172
4.2.1 Analyzer 173
4.2.2 Tokenizer 174
4.2.3 TokenFilter 182
4.2.4 CharFilter 202
4.2.5 Solr自定义分词 206
4.3 中文分词器 217
4.3.1 IK分词器 217
4.3.2 Ansj分词器 223
4.3.3 MMSeg4J分词器 233
4.3.4 Paoding分词器 240
4.3.5 Jcseg分词器 245
4.3.6 Ictclas分词器 258
4.3.7 FudanNLP 259
4.3.8 HanLP 262
4.3.9 Jieba分词器 266
4.3.10 分词器使用建议 268
4.4 本章总结 270
第5章 Solr查询 271
5.1 Solr查询概述 271
5.2 Solr查询相关度简述 273
5.3 Solr的查询语法解析器 275
5.4 Lucene的基本查询语法 283
5.5 Solr的标准查询语法解析器 287
5.6 Solr DisMax 288
5.7 Solr eDisMax 291
5.8 Solr的其他查询语法解析器 298
5.9 Query VS Filter Query 305
5.9.1 fq VS q 306
5.9.2 Filter Query缓存 307
5.9.3 Filter Query执行顺序 308
5.9.4 Post Filter 308
5.10 Solr返回结果 309
5.10.1 设置响应输出格式 309
5.10.2 选择返回域 310
5.10.3 分页查询 312
5.11 Solr排序 313
5.11.1 根据域进行排序 313
5.11.2 缺失值处理 314
5.11.3 排序的内存占用 315
5.12 调试查询结果 315
5.12.1 返回调试信息 315
5.12.2 开启调试模式 316
5.13 本章总结 316
第6章 Solr Facet 317
6.1 理解Facet 317
6.2 Facet简单示例 319
6.3 Query Facet 326
6.4 Range Facet 328
6.5 FacetFilter 330
6.6 Multiselect Faceting 335
6.6.1 key 335
6.6.2  tag 336
6.7 本章总结 339
第7章 Solr高亮 340
7.1 什么是Solr高亮 340
7.2 Solr高亮的工作原理 342
7.2.1 Fragmenter 348
7.2.2  Scorer 349
7.2.3 Encoder & Formatter 349
7.3  Facet & Highlighting 350
7.4 高亮多值域 351
7.5 高亮参数 352
7.6 FastVectorHighlighter 355
7.7 PostingsHighlighter 356
7.8 本章总结 358
第8章 Solr Query Suggestion查询建议 360
8.1 Spell-Check 361
8.1.1 Spell-Check简单示例 361
8.1.2 Spell-Check查询组件 362
8.2 Autosuggest 366
8.3 基于N-Gram实现Autosuggest 369
8.4 基于用户行为实现Autosuggest 371
8.5 本章总结 375
第9章 Solr Group分组 376
9.1 Result grouping VS Field collapsing 377
9.2 按照指定域分组 377
9.3 每个分组返回多个文档 381
9.4 按照Function动态计算值分组 382
9.5 按照任意Query分组 383
9.6 Group的分页与排序 383
9.7 Group& Facet 384
9.8 Group分布式查询 387
9.9 Group缓存 388
9.10 使用Collapsing Query Parser实现高效的Field Collapsing 388
9.11 Solr Group VS SQL Group by 389
9.12 本章总结 390
第10章 Solr企业级应用 391
10.1 Solr源码编译与补丁应用 391
10.2 部署Solr 396
10.2.1 构建你自己的Solr发布版本 397
10.2.2 Embedded Solr 397
10.3 Solr硬件要求与系统配置 397
10.3.1 内存和SSD 397
10.3.2  JVM配置 398
10.3.3 思考Solr索引与查询性能 401
10.4  Solr数据批量导入 405
10.5 Solr Shard与Replication 406
10.5.1 Shard 406
10.5.2  Replicate 408
10.6 Core管理 410
10.7  Solr集群管理 412
10.7.1  Solr Ping健康检测 412
10.7.2 Solr配置文件管理 413
10.8 如何与Solr交互 414
10.8.1 使用REST API与Solr交互 415
10.8.2 使用SolrJ与Solr进行交互 415
10.9 监控你的Solr 418
10.9.1  Solr的性能统计 418
10.9.2 Solr的缓存性能 419
10.9.3  Solr JMX 419
10.9.4  Solr日志 424
10.9.5  Solr负载测试 424
10.10 Solr版本升级 428
10.11 本章总结 428

教学资源推荐
作者: 宋晓宇 主编 赵艳平 副主编 杨艳春 李世伟 张洁 编著
作者: 许畅 陈嘉 朱晓瑞 编著
作者: 王恺 王志 李涛 朱洪文 编著
作者: 【美】梁勇(Y.Daniel Liang) 著
参考读物推荐