没有合适的资源?快使用搜索试试~ 我知道了~
首页Solr in Action中文版
Solr in Action中文版
需积分: 10 37 下载量 136 浏览量
更新于2023-05-30
评论
收藏 3.45MB PDF 举报
最近在看solr,读了Solr in Action一书并整理了Solr in Action 第一章到第五章的中文版
资源详情
资源评论
资源推荐
Solr In Action !
Part 1初识 SOLR
1 Solr简介
2开始熟悉 Solr
3 Solr核概念
4配置 Solr
5建索引
6本分析
Part 2 Solr核功能
7发起查询 和 处结果
8分类索引
9命中结果亮
10查询建议引导
11结果分组 合并域
12将Solr产品化
Part 3 Solr级应
13扩展Solr云
14多语搜索
15复杂数据操作
16相关性的调整
17跳出思维定势
附录:
A从源代码编译Solr
B玩转Solr社区
第章 Solr简介
本章速览:
·搜索引擎处理的数据特性
·常见搜索引擎⽤例
·Solr核⼼模块介绍
·选择Solr的理由
·功能概述
伴随着社交媒体、云计算、移动互联⽹和⼤数据等技术的⾼速发展,我们正迎来⼀
个令⼈激动的计算时代。软件架构师们开始⾯对的主要挑战之⼀,便是如何处理全球巨
⼤的⽤户基数所产⽣及使⽤的海量数据。此外,⽤户们开始期待在线软件应⽤永远都是
稳定可⽤的,并且能够⼀直保持响应,这对应⽤就提出了更⾼的可扩展性和稳定性需求。
为了满⾜这些需求,⼀些专⽤的⾮关系型数据存储及处理技术,统称为NoSQL(Not
Only SQL)技术,开始获得越来越多的青睐。这些系统并不强制要求将所有的数据都存
储在曾经成为事实上标准的关系型数据模型当中,⽽是共⽤了⼀个通⽤的设计模式,在
数据存储处理引擎和特定的数据类型之间进⾏匹配。换句话说,NoSQL技术为处理特定
数据类型的特定类别问题做了性能优化。由于对可扩展性的需求和性能的需求不断增加,
导致各种NoSQL技术和传统关系型数据库开始混合使⽤,这种跨界架构变得越来越流
⾏。过去那种⼀种数据处理⽅案就能吃遍天下的时代已经⼀去不复返了。
本书主要讨论⼀种特殊的NoSQL技术,即Apache Solr。和她的其他⾮关系型兄
弟们⼀样,Solr也为⼀类特定问题的处理做了优化。具体来说,Solr是⼀个可扩展的,
可快速部署的,对搜索海量⽂本中⼼的数据和对返回结果做相关性排序⽅⾯做了优化的
企业级搜索引擎。
这句话读上去有点拗⼜,不过没关系,我们把这个定义中的亮点分解出来看:
·可扩展性:Solr可以把建⽴索引和查询处理的运算分布到⼀个集群内的多台服务器
上。
·快速部署:Solr是开源软件,安装和配置都很⽅便,可以根据安装包内的Sample配置
直接上⼿。
·优化的搜索功能:Solr搜索够快。对于复杂的搜索查询,Solr可以做到亚秒级的处
理,通常⼏⼗毫秒就能处理完⼀次复杂查询
·海量⽂本:Solr是针对百万级以上的海量⽂本处理⽽设计的,可以很好地处理海量数
据。
·⽂本中⼼的数据:Solr为搜索包含⾃然语⾔的⽂本内容做了优化,⽐如电⼦邮件,⽹
页,简历,PDF⽂档,或是推特、微博、博客这些社交内容等等,都适合⽤Solr来处
理。
·结果是按相关性排序的:Solr的搜索返回结果是按照结果⽂档与⽤户查询之间的相关
程度度做排序的,保证最相关的结果会优先返回。
在本书中,你将学到如何使⽤Solr来设计实现⼀个可扩展的搜索⽅案。我们的学习
旅程从了解Solr⽀持的数据类型和典型⽤例开始。这样你能更好的理解在整个现代软件
应⽤架构全景图中Solr所处的位置,以及Solr到底是设计来处理哪些问题的。
1.1我到底需要个搜索引擎吗?
我们猜测你已经有了些想法要准备使⽤搜索引擎了,否则你也不会翻开这本书。因
此,我们就不浪费时间来揣度你到底是为什么开始考虑⽤Solr的了,我们直接来讨论点
⼲货,看看关于你的数据和⽤例⽅⾯,有哪些问题是你在决定是否使⽤搜索引擎之前所
必须要回答的。这最终会归结为如何深刻理解你的数据和你的⽤户,以选⽤⼀个合适的
技术来同时满⾜⼆者的需求。我们先从讨论⼀下哪些数据属性是搜索引擎适合处理的。
1 1.1.1 管理⽂本中⼼的数据
合理选⽤同数据匹配的存储及处理引擎,是现代软件应⽤架构的标志性要求之⼀。
如果你是⼀个优秀的程序员,那么你应该知道要根据在算法中使⽤数据的⽅式来选取最
合适的数据结构。⽐如,如果你需要实现快速随机查找,你就不会使⽤链表结构来存储
数据。同样的道理也适⽤于搜索引擎的选取。这⾥列出了适合⽤类似Solr这样的搜索引
擎来处理的数据的4种主要特点:
1 ⽂本中⼼的数据
2 读取远多于写⼊的数据
3 ⾯向⽂档的数据
4 灵活的Schema
也许在这⼉应该加上第五个数据特性,即:海量数的据量,也就是”⼤数
据“,但是我们主要关注的是Solr区别于其他NoSQL技术的主要特性,⽽可以
处理海量的数据并不是它们的主要区别之⼀。
虽然这⾥列出了类似Solr这样的搜索引擎可以有效处理的数据类型的4个主要特点,但是
这只是⼀个粗略的准则,并不是⼀个严格的标准。我们来深⼊的讨论⼀下这些数据特性,
看看为什么它们对于搜索来说这么重要。我们现在只关注概念,具体的实现细节在稍后
的章节讨论。
⽂本中⼼的数据
你肯定见过有⼈⽤“⾮结构化数据“这个术语来描述搜索引擎处理的数据。我们认为“⾮结
构化”这个词有些模糊不清,因为任何⼀个基于⼈类语⾔产⽣的⽂档都是隐含有⼀定的结
构的。要理解“⾮结构化”这个术语你可以认为这是从计算机的⾓度来看的。在计算机眼
中,⽂本⽂档就是⼀个字符流。这个字符流必须通过特定的语⾔规则解析出语义结构,
才能被检索到。⽽这正是搜索引擎的⼯作所在。
我们认为“⽂本中⼼的数据”这个词更适合⽤来描述Solr处理的数据类型。因为搜索引擎
的设计初衷就是⽤来提取⽂本数据的隐含结构,并⽣成相关索引以提⾼查询检索的效率。
“⽂本中⼼的数据”这个词隐含表明了⽂档中的⽂本信息包含⽤户感兴趣的查询内容。当
然,搜索引擎也⽀持⾮⽂本数据,⽐如数字类型的数据,但是其主要强项,还是在于处
理基于⾃然语⾔的⽂本数据。
前⾯说的都是“⽂本”,其实“中⼼”这个部分也很重要,因为如果你的⽤户对于⽂本部分
的内容不感兴趣,那么搜索引擎可能就不是处理你的问题的最佳选择。举个例⼦,对于
⼀个给员⼯⽤来创建差旅⽀出报告的应⽤,每份报告都包括⼀些结构化的数据,⽐如⽇
期,费⽤类型,汇率,数量等等,另外每项费⽤后⾯可能会包含⼀些备注信息,⽤于描
述该项费⽤的⼤致情况。这样⼀个应⽤就是⼀个包含⽂本信息,但并不是“⽂本中⼼的数
据”的⼀个例⼦,因为会计部门在使⽤这些员⼯的⽀出费⽤报告来⽣成⽉度⽀出报告时,
并不会通过查找备注⾥的⽂本信息来做,⽂本在这⾥并不是其关⼼的主要内容。简单来
说,就是不是所有包含⽂本信息的数据都适合搜索引擎来处理。
所以现在先花⼏分钟好好想想你的数据是否是“⽂本中⼼的数据”。考虑的重点主要就是
数据中的⽂本信息⽤户是不是会拿来做检索。如果答案是YES,那么搜索引擎很可能是
⼀个好的⽅案选择。我们在第5章和第6章会讨论如何利⽤Solr的⽂本分析来提取⽂本数
据的结构的细节。
读取远多于写⼊的数据:
另外⼀个搜索引擎可以⾼效处理的数据特性是“读取远多于写⼊的数据”。⾸
先,需要声明的是Solr是允许你更新索引中的现有⽂档内容的。你可以把“读取远
多于写⼊”解读为对于⽂档的读取操作频率要远远⾼于创建⽂档和更新⽂档的频
率。但是别狭隘的理解为你就完全不能写⼊数据了,或是你会被限制在⼀个特定频
率之下更新数据。事实上Solr4的⼀个关键特性就是“近乎实时的查询”,这个功能
可以允许你每秒钟为数千的⽂档建⽴索引并且⼏乎⽴刻就能查询到这些新加⼊的⽂
档。
“读取远多于写⼊的数据”背后的关键点是你的数据在写⼊Solr后,在其⽣命周
期内应该是要被重复读取很多次的。你可以理解为搜索引擎并不是主要⽤来存储数
据的,⽽是主要⽤于查询存储的数据的(查询请求是⼀种读取操作)。所以如果你
需要很频繁的更新数据,那么搜索引擎可能不太适合你的需求,其他的NoSQL技
术,⽐如Cassandra,可能更适合你的快速随机写⼊的需求。
⾯向⽂档的数据
到⽬前为⽌,我们⼀直使⽤更通⽤的“数据”这⼀术语,但是实际中搜索引擎处
理的都是⽂档数据。在搜索引擎中,⼀个⽂档是由值域(field)组成的独⽴集合,每
⼀个值域都只保存数据值,不能再嵌套包含其他值域。换句话说,在Solr这样的搜
索引擎中,⽂档都是扁平结构的,⽂档之间不存在相互依赖关系。Solr中“扁平”的
概念是⽐较宽松的,⼀个值域可以保存多个数据值,但是值域不能再嵌套包含⼦值
域。也就是说你可以在⼀个值域⾥存储多个数据值,但是你不能往值域⾥头嵌套别
的值域。
Solr中这种扁平化的、⾯向⽂档的⽅式可以很好的处理已经⽂档化的数据,⽐如⽹页,
博客,pdf⽂档等等。那么如果要⽤solr来处理关系型数据库中已经结构化好的数据应该
怎么办呢?这种情况下你需要先把关系型数据库中跨表存储的数据取出来,去结构化,
然后放到扁平化的⾃包含⽂档结构⾥。我们会在第三章学习怎么处理这样的问题。
你还需要考虑你的⽂档数据中的哪些值域需要存储在Solr中,哪些值域需要存
储在其他系统中(⽐如数据库中)。简单来说,搜索引擎只存储需要被检索到的数
据,以及⽤于显⽰检索结果的数据。举个例⼦,如果你有⼀个在线视频的搜索索引,
你应该不会希望把视频⽂件本⾝存储在Solr中,合理的⽅案应该是把⼤的视频⽂件
都放在内容分发⽹络(CDN)中。通常你只需要在搜索引擎中存储满⾜搜索需求的
最少数据即可。刚才这个在线视频的例⼦清楚的说明了不要把Solr当成通⽤数据存
储技术,Solr的⼯作是找到⽤户感兴趣的视频⽂件,⽽不是存储视频⽂件本⾝。
灵活的Schema
最后⼀个搜索引擎数据的主要特性是有灵活的schema。这意味着查询索引中
的⽂档不需要拥有统⼀的结构。在关系型数据库中,表中的每⼀⾏数据都必须拥有
相同的结构。⽽在Solr中,⽂档们可以有不同的值域。当然同⼀个索引中的⽂档们
⾄少应该拥有⼀部分⼤家都有的值域以便于检索,但是并不要求所有⽂档中的值域
结构完全⼀样。
举个例⼦,假如要做⼀个⽤于查找出租和出售房源的搜索应⽤。显然每条房源
⽂档都会有地段,房间数,卫⽣间数等⼀些共有的值域,但是根据类型是出租还是
出售的不同,不同的房源⽂档会有不同的值域。⼀条出售的房源会有售价值域,财
产税值域,⽽⼀条出租的房源⽂档则会有⽉租⾦和宠物政策等等不同的值域。
总结⼀下,Solr这样的搜索引擎是专门优化⽤于处理⽂本中⼼的,读取远多于
写⼊的,⾯向⽂档的,拥有灵活Schema的数据⽤的。Solr并不是⼀种通⽤数据存
储处理技术,这也是区别于其他NoSQL技术的主要因素。
有众多不同的数据存储和处理⽅案可供选择的好处是你不再需要费劲脑汁地寻
找⼀种可以满⾜所有需求的通⽤技术⽅案。搜索引擎在某些特定任务上表现出⾊,
但是在其他⼀些⽅⾯性能很差。这意味着在⼤多数情况下,你可以⽤Solr来作为关
系型数据库和其他NoSQL技术的有⼒补充,⽽并不是要取代后者。
既然我们已经谈到了Solr所针对优化处理的数据类型,那我们就接着来讨论⼀
下像solr这样的搜索引擎主要是设计来解决哪些实际⽤例的。理解这些⽤例可以帮
助你理解搜索引擎技术是如何区别于其他数据处理技术的。
1 1.1.2 常见的搜索引擎⽤例
在这⼀节中,我们来看看Solr这样的搜索引擎都能⼲些什么。正如我们在1.1.1
节中所提到的那样,这些讨论只是⼀种指南性质的建议,不要把它们当成严格的使
⽤规则来看。在我们开始之前,你需要意识到想做出⼀个优秀的搜索服务,其门槛
是很⾼的。现在的⽤户都习惯于使⽤像Google和Bing这样又快又⾼效的⽹络搜索
引擎,⽽很多受欢迎的⽹站也有⾃⼰强⼤的搜索⽅案来帮助⽤户快速的获取想要的
信息,所以⽤户对搜索服务并不陌⽣并且会⾮常的挑剔。当你在评估像Solr这样的
搜索引擎时,或是在设计你⾃⼰的搜索⽅案时,⼀定要有根弦⼉,要把⽤户体验放
在⾼优先级上来考虑。
基本的关键字查询
很明显,作为⼀个搜索引擎来说,⾸先必须要能够⽀持基本的关键词查询。
这也是搜索引擎的主要功能之⼀。不过关键词查询功能还是值得在这⾥强调⼀下的,
因为这是⽤户使⽤搜索引擎最典型的⽅式。很少有⽤户想要会⼀上来就填写⼀个很
完整的复杂搜索表单来进⾏搜索的。考虑到关键词搜索功能将会是⽤户和你的搜索
引擎之间最常见的交互⽅式,这个基本功能必须能够提供给⽤户以⾮常好的⽤户体
验才⾏。
⼀般来说,⽤户希望只输⼊⼏个简单的关键词就能获取到很好的搜索结果。这也
许听上去像是⼀个简单的匹配任务:把查询字串和⽂档进⾏匹配即可。不过请考虑⼀下
要实现良好的⽤户体验所必须解决的⼏个问题:
· 相关结果必须迅速返回,⼤多数情况下要求⼀秒钟之内就能够返回
· ⽤户的查询字串出现拼写错误时能够⾃动纠错
· ⽤户输⼊时通过⾃动补全建议来减少⽤户的输⼊负担,这在移动应⽤中很常见
· 处理查询字串中的同义词近义词
· 对包含查询字串的语⾔变异的⽂档进⾏匹配(译者注:语⾔变异是语义学术语,即
⽤词不完全⼀样的近似表达)
· 短语处理,⽤户是希望匹配短语中所有的单词,还是只要匹配短语中的部分单词就
⾏
· 对⼀些通⽤介词的处理,⽐如“a,” “an”, “of”, “the”等等
· 如果最靠前的查询结果⽤户不满意,如何给⽤户返回更多的查询结果
就像你看到的那样,不使⽤特定的处理⽅法的话,这样⼀堆问题会使得看上去如此
简单的功能实现起来变得很困难。然⽽利⽤像Solr这样的搜索引擎,这些功能就能⽴等
可取,实现起来变得很简单。当你给⽤户提供了⼀个强⼤的关键词搜索⼯具之后,接下
剩余105页未读,继续阅读
Zhbean的博客
- 粉丝: 6
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0