Solr in action读书笔记第一篇第一章

 


第1章 Solr简介

本章速览:

·搜索引擎处理的数据特性 
·常见搜索引擎用例 
·Solr核心模块介绍 
·选择Solr的理由 
·功能概述

Solr 定义:

  • 可扩展性:Solr可以把建立索引和查询处理的运算分布到一个集群内的多台服务器上。
  • 快速部署:Solr是开源软件,安装和配置都很方便,可以根据安装包内的Sample配置直接上手。
  • 优化搜索 :Solr搜索够快。对于复杂的搜索查询,Solr可以做到亚秒级的处理,通常几十毫秒就能处理完一次复杂查询
  • 海量文本:Solr是针对百万级以上的海量文本处理而设计的,可以很好地处理海量数据。
  • 以文本为中心的数据 : Solr为搜索包含自然语言的文本内容做了优化,比如电子邮件,网页,简历,PDF文档,或是推特、微博、博客这些社交内容等等,都适合用Solr来处理。
  • 结果是按相关性排序的 : Solr的搜索返回结果是按照结果文档与用户查询之间的相关程度度做排序的,保证最相关的结果会优先返回。

1.1 为什么我需要一个搜索引擎?

1.1.1 管理文本数据集

适合用类似Solr这样的搜索引擎来处理的数据的4种主要特点:

  1. 以文本为中心的数据
  2. 读取远多于写入的数据
  3. 面向文档的数据(扁平化,由值域组成)
  4. 灵活的Schema

第5个特性应该是涉及到大数据的处理,然而我们更注重于分析搜索引擎与其他NoSQL技术的区别,而且Solr对大数据量的支持是毫无疑问的。

这只是一个粗略的准则,并不是一个严格的标准。

以文本为中心的数据

读取远多于写入的数据

面向文档的数据(扁平化,由值域组成)

灵活的Schema

总结一下,Solr这样的搜索引擎是专门优化用于处理以文本为中心的,读取远多于写入的,面向文档的,拥有灵活Schema的数据用的。Solr并不是一种通用数据存储处理技术。

1.1.2 通用搜索引擎使用案例

基本的关键字查询

· 相关结果必须迅速返回,大多数情况下要求一秒钟之内就能够返回 
· 用户的查询字串出现拼写错误时能够自动纠错 
· 用户输入时通过自动补全建议来减少用户的输入负担,这在移动应用中很常见 
· 处理查询字串中的同义词近义词 
· 对包含查询字串的语言变异的文档进行匹配(译者注:语言变异是语义学术语,即用词不完全一样的近似表达) 
· 短语处理,用户是希望匹配短语中所有的单词,还是只要匹配短语中的部分单词就行 
· 对一些通用介词的处理,比如“a,” “an”, “of”, “the”等等 
· 如果最靠前的查询结果用户不满意, 如何给用户返回更多的查询结果

排序的检索结果

对文档的相关度排序十分重要,理由如下:

  • 现代搜索引擎通常都存储了百万甚至上亿的海量数据,查询若不按相关度排序,则用户很可能在返回的结果中迷失。
  • 用户更希望只用很少的关键字就从搜索引擎中查到结果。用户没有耐心,也希望搜索引擎能搜索用户所想而不是用户所说。在移动应用中,这个更为明显,因为移动用户很可能打错字,且输入很少。

除了关键词查询之外

搜索引擎不适合做的事…

1.2 Solr是什么?

本节中从头开始设计一个搜索应用,以此来了解Solr的关键组件,更有助于理解Solr的特性以及他们存在的意义。深入之前,先来了解Solr不是什么。

  • Solr并不是一个像Google或是Bing那样的web搜索引擎
  • Solr和网站优化中经常提到的搜索引擎SEO优化没有任何关系

1.2.1 信息检索引擎

信息检索(IR)是指从海量的数据集合(通常存储在计算机系统中)中,根据某种非结构化的本质属性(通常是文本内容)查找出满足信息需求的材料(通常是文档) 的过程。

图1.2 信息检索的关键数据结构式反向索引 

1.2.2 灵活的概要管理

Solr提供了xml文档来配置索引结构以及字段的解析、呈现方式,即schema.xml。Solr使用schema.xml来给Lucene展示所有可能匹配文档所需要的字段及其数据类型,省时且可读性强。Solr构建的索引与内置的可编程的Lucene索引百分百兼容。

此外Solr在核心的Lucene索引功能之上还添加了其他一些不错的功能。具体来说,Solr提供了Copy Fields和Dynamic Fields两种新的值域类型。Copy Fields提供了一种方法,可以将一个或多个值域中的原始文本内容赋值到另一个新的field值域中。Dynamic Fields则允许你无须在schema.xml里显式的声明,就可以将同一值域类型赋予多个不同的值域。这在为拥有多个值域的文档建立模型时非常有用。

1.2.3 Java Web应用

Solr的设计者们指出Solr非常适合集成到现有的系统中,作为现有系统的一个有力补充。事实上,你很难找出一个Solr无法集成进去的系统。 
Solr提供简单的类REST服务,支持XML,JSON,HTTP等标准。顺便说一句,我们并不使用RESTFul一词来描述Solr基于HTTP的 API,因为它 并不严格遵守所有的REST(Representatonal state transfer)原则。例如,在Solr中会用到HTTP POST来删除文档,而不是用HTTP DELETE。

1.2.4 一个服务中多个索引

Solr支持在单一的Solr 引擎上运行多个Solr 核心。 
每一个核心都有一个独立的索引和配置,在一个Solr实例中可以存在多个Solr 核心。这样你只需要一个Solr服务器就可以管理多个核心, 可以方便的实现服务器资源共享,以及及监控维护服务的共享。Solr有专门的API用于创建和管理多个Core。 
Solr多核心支持功能的一个应用是数据分区,比如用一个core来负责最近更新的文档,而用另外的core来处理之前生成的文档,这个功能被称为按时间顺序分片。

1.2.5 扩展插件... 4

最主要的三个子系统:

  • 文档管理
  • 查询处理
  • 文本分析。

每个子系统由模块化的“管道”来组成,也方便用户加入新功能。就是说为加新功能,你不需要重写Solr的整个查询-处理流程,只需要在已经存在的管道上插入新的搜索组件即可。Solr易扩展也更方便适配你自己的应用需求。

1.2.6 可扩展性... 4

Solr实现可伸缩性的第一张牌是灵活的cache管理功能。该功能可以避免服务器重复进行耗费资源的操作。具体来说就是Solr预先设置了一些cache来节省开销很大的重复计算,比如Solr会缓存查询过滤器的计算结果。

缓存的作用是有限的,为了处理更多的文档和获得更高的查询吞吐能力,你需要能够通过扩展服务器来横向扩展系统的性能。现在我们来研究一下Solr扩展时最常见的两个方面。第一个是查询的吞吐能力扩展,也就是你的引擎每秒钟可以处理的最大查询数是多少。 另一个扩展维度是被索引的文档数。

1.2.7 容错性... 4

我们假定你的系统中一共有4个分片的情况。如果2号分片所在的服务器断电了,那么此时Solr就不能继续正常的建立文档索引了,也不能响应查询服务了。所以这个时候可以说,你的搜索引擎就算“挂掉了”。要避免这种情况,你可以给每一个分片做备份。回到我们的这个例子中,当2号分片挂掉时,Solr会把所有指向2号分片的索引建立请求和查询请求重定向到它的备份哪儿,备份这个时候并没有挂掉,还能正常工作, 所以整个搜索服务还在。出错所产生后索引服务和查询服务仍然可以工作,不过可能不会像之前那么快了,因为少了一台服务器来处理请求。

1.3 为什么选择Solr?... 4

1.3.1 软件架构师选择Solr. 4

Solr全新的SolrCloud功能的亮点:

  • 中心化的配置
  • 分布式的索引,避免单点失败(SPoF)
  • 自动容错,自动产生新的主分片
  • 任意节点均可触发覆盖整个集群所有分片的分布式全查询,且已经集成了自动容错和负载均衡

SolrCloud still requires manual interaction(手动交互) when modifying the size of your search indexes (merging or splitting indexes), and not all Solr features work in a distributed mode. 
SolrCloud在两方面还有待提高。首先,不是所有功能都能工作在分布式模式下。比如 joins连接功能。其次,一旦索引建立,索引的分片数目就不能再动态调整,要想改变分片数的话只能重新对所有文档建立索引。

1.3.2 系统管理员选择Solr.

1.3.3 首席执行官选择Solr.

1.4 优势综述...

Solr的主要功能:

  • 用户体验
  • 数据建模
  • Solr 4的新功能

1.4.1 用户体验类功能...

用户体验类功能:

  • 1、分页和排序功能: 
    分页功能对于两类关键的输出有帮助: 
    1)结果返回的更快了,因为每次查询都只需要返回整个搜索结果中的一个很小的集合; 
    2)可以帮助你追踪到底有多少请求是针对更多页码内容的。
  • 2、分类检索功能: 
    分类检索功能将搜索结果按照特性分类放到一个个小组中,这就为为用户提供了一个不断优化搜索关键字和浏览搜索结果的工具。
  • 3、自动补全功能
  • 4、拼写检查功能: 
    Solr的拼写检查支持两种基本的模式: 
    1 )自动纠错模式:Solr可以在用户出现拼写错误的时候自动根据 该词语在索引中是否存在而做出相应的纠错处理 
    2 )“您要找的是不是…功能“: Solr也可以根据用户的输入,为用户建议一个更佳的输入方案,比如当用户输入”hilands“时,solr会建议用户”您要找的是不是 highlands?“
  • 5、高亮命中结果功能
  • 6、地理位置查询功能

1.4.2 数据模型优势... 5

为搜索建立数据模型时可能会用到的一系列关键功能,包括:

值域的合并和分组功能 
灵活的查询支持功能 
连接功能 
归集功能 
从PDF和word等格式的文档中导入富媒体数据的功能 
从关系型数据库中导入数据的功能 
多种语言的支持

1.4.3 Solr4的新特性... 5

几乎实时的搜索查询 
支持乐观并发机制的原子更新 
实时获取功能 
事务日志的持久层写入 
使用Zookeeper轻松的进行分片操作和复制操作

1.5 本章小结... 5

转载于:https://www.cnblogs.com/lvwm1314/p/5151377.html

Solr in Action 第一章翻译(待整理)相关推荐

  1. mondrian in action 第一章翻译 (主要用百度翻译完成,稍加整理)

    本章涵盖 基于数据库的报告的复杂性a OLAP报告工具的优势 用蒙德里安的原因 业务分析是一个基于历史数据分析来深入了解业务绩效的过程.传统上,用于业务分析的工具非常昂贵,难以维护.相比之下,蒙德里安 ...

  2. 01_01 python机器学习_第一章学习内容整理_加载样本数据绘制散点图

    第一章学习内容整理_加载样本数据&绘制散点图 01 常用包说明 python可以解决很多问题,相应解决方案使用的包也很多,不太好记忆. 为了便于记忆,用大白话简单描述一下各个包的功能. # 科 ...

  3. SEAM IN ACTION 第一章

    Part 1 Teeing off with Seam 开球 Many excellent frameworks exist to support the development of webbase ...

  4. NHibernate in Action(第一章1.2)

    1.2 .NET中的持久化方法 我们已经讨论过如何在一些较大的系统中使用持久层来处理加载和保存数据.现在也有很多方法可以用于实现持久层,每个方法都有各自的优点和缺点.下面是一些流行的方法: 手工编写代 ...

  5. 《人机交互技术》第一章 绪论 知识点整理

    1.概念(第一版 P1) (1)人机交互(Human-Computer Interaction HCI)是指关于设计.评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的学科.主要是 ...

  6. 《静态时序分析实用方法》 第一章翻译

    第1章 引言 解释了什么是静态时序分析以及它如何用于时序验证.还描述了功率和可靠性方面的考虑. 概述了纳米设计的静态时序分析程序.本章解决了诸如什么是静态时序分析.噪声和串扰的影响是什么.如何使用这些 ...

  7. 《Autotools – GNU Autoconf, Automake与Libtool实践者指南》第一章

    最近项目中有用到此部分工具,所以在此转载一篇相关文章,如有侵权,请留言告知! 转载于http://www.xuebuyuan.com/2147621.html 前言 本文根据<Autotools ...

  8. 会计基础第一章模拟试题(1)

    会计基础第一章模拟试题(1) 下面我们对会计基础第一章试题进行整理,梳理这部分的知识目的在更好的掌握基础.从另外一个侧面理解,整理好这部分的内容,死记硬背对掌握整个会计基础部分有很好的作用.同时,可以 ...

  9. Solr in Action 翻译完成情况

    Solr in action读书笔记章节分布 第一篇 初识Solr 第1章 Solr简介  已完成 第2章 了解Solr   待整理 第3章 Solr关键概念 第4章 Solr配置 第5章 索引 第6 ...

最新文章

  1. 学习SAP项目成功实施的十大条件
  2. windows进程管理器_任务管理器就能搞定9成的电脑问题?方法在这里!
  3. 学习设计模式——工厂方法模式
  4. 项目服务器admin,django-admin创建项目与manage服务器的运行
  5. JavaScript学习笔记(三)--操作运算符
  6. 为什么jsp的form表单不能跳转_UI设计干货分享:设计语言 - 表单(登录/注册)...
  7. Path Operation
  8. Leetcode:Pow(x,n)
  9. SSL-ZYC 2416 条形图
  10. SpringBoot入门篇-简介
  11. SSH和SSM对比(学完后的总结)
  12. iphone6连接电脑后计算机不显示器,iPhone6怎么无故显示屏不亮了
  13. pandas计算对数收益率
  14. 索尼摄像机V1C语言设置,索尼摄像机随机软件(Picture package) v1.8官方版
  15. Spring Cloud ZooKeeper Discovery Client Not Register on ZooKeeper when using SpringBootServletInitia
  16. 每个优秀的人,都有一段沉默的时光
  17. 言过其行、言而不行。
  18. 计算机硬盘安装的两大,电脑硬盘装2个1TB的硬盘好还是1个2TB的硬盘好?
  19. 悟空蜘蛛池:致力于提高搜索引擎排名与收录
  20. 【线上峰会】如何一天掌握物联网全栈开发之道

热门文章

  1. 阿里云服务器SSH连接自动断开问题
  2. lecture11-hopfiled网络与玻尔兹曼机
  3. Dobot相关资料汇总(随时更新)
  4. fatfs读写csv文件
  5. Solo.io发布Gloo Mesh Enterprise 2.0
  6. 项目>点餐系统 总结概述
  7. 计算机保研夏令营会有院校歧视吗?怎么应对院校歧视?
  8. MVVM 和 VUE三要素:响应式、模板引擎、渲染
  9. 下载 | 5 本程序员成长必读书籍
  10. JAVA体育用品在线商城系统-springboot【数据库设计、论文、源码、开题报告】