暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Solr权威指南:下卷.pdf
97
139页
1次
2023-12-06
25墨值下载
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 4Cookbook》《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
通过第11章,你将可以学习到以下内容:
·掌握如何使用Function Query以及如何自定义Function Query;
·掌握如何使用Geospatial Query;
·掌握如何使用Pivot Facet和Subfacet;
·掌握如何使用JSON Facet API来实现复杂的数据统计查询
·掌握如何使用Solr中的其他查询组件,比如Elevation(竞价排名组件);
·掌握如何使用Solr中的Result Clustering组件实现自动结果集聚类分组。
Solr作为一个强大的文本搜索平台,能够根据输入关键字查询并返回索引文档,你可能也已经了解到了Solr的一些核心功能,比如文本分词、关键字高亮、结果集分组等。尽管对于大多数搜索程序来
说,将那些与用户查询最佳匹配的索引文档返回给用户是非常重要的,但是Solr还有另外一个比较常见的使用场景:聚集结果集用于数据统计分析。Solr的Pivot Facet支持叠加统计多个Facet(维度),它
能够在单个查询中对任意的聚合分类进行计算统计,这使得Solr在提供数据分析报告方面变得很有用并且还十分高效。Solr另一个核心功能就是在查询时能够对数据执行一个Function(函数)进行动态计
算,函数计算后的结果可以被用于Filter Query、文档的相关性评分、文档的排序、作为文档的“伪域”被返回。Solr还提供了强大的Geospatial(地理空间)查询功能,Geospatial查询允许你根据一个点
或者一个区域进行多边形查询,或以经纬度为圆心在指定半径的圆内进行查询,实现附近的位置查询(比如查询当前用户所处位置附近的酒店或饭店)。有时候,你期望在返回的索引文档的域中引用外
数据源,Solr提供了这个功能。Solr还支持在同一个Solr实例内跨Core在一个外键域上执行Join操作,这类似于SQL里的两个表根据外键进行多表连接查询。上述每个复杂的功能都会在本章中进行讲解
11.1 Solr函数查
Solr中的Function Query(函数查询)允许你为每个索引文档执行一个函数进行动态计算值。Function Query是一个比较特殊的查询,函数动态计算后得到的值可以作为一个关键字添加到查询中,也
可以作为文档的评分,就像是一个普通的关键字查询同时还能生成相关性评分。通过使用Function Query,函数动态计算值可以被用于修改索引文档的相关性评分,以及查询结果集排序,而且函数动态计
算值还可以作为一个“伪域”被动态添加到每个匹配的索引文档中并返回给用户。Function Query还支持嵌套,意思就是一个Function的输出可以作为另一个Function的输入,Function支持任意深度的
嵌套。
11.1.1 Function语法
Solr中标准的Function语法是先指定一个Function名称,后面紧跟着一对小括号,小括号内可以传入零个或多个输入参数,语法使用示例如下:
functionName()
functionName(input1)
functionName(input1, input2)
functionName(input1, input2, http://www.hzcourse.com/resource/readBook?path=/openresources/teach_ebook/uncompressed/17239/OEBPS/Text/..., inputN)
Function的输入参数可以是以下任意一种形式:
·一个常量值(数字或者字符串),语法:
100, 1.45, "hello world"
·一个域名称,语法:
fieldName, field(fieldName)
·另外一个Function,语法:
functionName(http://www.hzcourse.com/resource/readBook?path=/openresources/teach_ebook/uncompressed/17239/OEBPS/Text/...)
·一个变量,语法:
q={!func}min($f1,$f2)&f1=sqrt(popularity)&f2=1
尽管Solr Function乍一看让人有点不知所措,其实Solr文档中定义了每个Function的输入参数的类型,大部分的Function都遵循Function的标准语法,但是Constant Function(常量函数)、Field
Function(域函数)、Parameter Substitution(替换变量)这些属于特例,它们支持另一种简单语法。Constant Function(常量函数)的语法就是值本身。Field Function(域函数)的语法就是域的
名称被一个名称为“field”的函数包裹。Parameter Substitution(替换变量)的语法就是函数的输入变量使用的是一个$开头的变量,该变量引用自请求URL的查询文本中定义的变量。除了这3个特例,
其他函数都使用标准的Function语法。
of 139
25墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜