文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

Solr 项目是在 2004 被创建的, 最初的目的是设计一款开源文本搜索引擎,就像谷歌搜索一样,解决企业网站和内部文件搜索.基于Lucene搜索库, Solr 添加了 客户端-服务器端的架构, RESTful风格的 API, 和一些用于文本检索的语法糖.

很快到了 2016, Solr已经从企业搜索引擎或者说 一个可怜的谷歌进化到实时的数据分析,可以与 Redshift, Spark和 Presto同步竞争. 它的变化是循序渐进的, 所以有可能你错过了什么. 这里有一些大的纪事:

第 1 段(可获 1.33 积分)
  • 支持非文本字段: 早些时候, Solr 介绍了定义非文本字段,如数字和日期. 为什么它在文本搜索引擎中是有效的? 例如,描述电影标题的文本字段, 你也可以定义电影上映的年份. 用户可以搜索2005年至2008年标题中包含Battle的所有电影
  • Faceted 检索: 动态聚合后的搜索结果将会自动分类,在训练结果中方便用户对任何字段做检索。例如,我们设想一下数据库中有一些包含城市与位置的工作信息。用户可以检索所有的软件工程师的职位,并可以看到每个城市对工程师招聘的数量。或者,用户可以搜索在波士顿的所有工作,包括这些职位所在的位置。(注意Faceting是一种形式的高速聚合后的形态,例如,在没有提前处理聚合的情况下,在所有实例数据中对给定字段做求和运算。)
  • 高可用性和可伸缩性: 2012发布了SolrCloud , 包含了Solr 的集群节点. 数据自动分片并在节点间复制, 查询请求会自动地分散到群集上, 有故障的节点会自动卸载. 随着 SolrCloud的发布, 在处理重要的数据与任务时,Solr 成为了工业级的明星产品 .
  • 性能改进: 在早些时候, 添加新数据到Solr,需要重建全部的索引. 这将导致Solr成为假死状态,所以索引重建被安排在下班时间, 直到索引重建完毕,新的数据无法检索. 后续的版本通过内存索引中实现的瞬时更新,补充完善了基于磁盘索引的更新。 Solr 还添加了好几层缓存, 因此,大量重复的查询(或部分查询)不需要重新执行。
  • SQL 语言支持:  Solr 查询语言与 SQL语言非常相似, 但它并不是SQL, 所以 标准SQL工具并不兼容它,例如, 表的可视化分析工具. 最近Solr在新发布的版本中开始支持SQL, 和 JDBC 驱动一样. 你可以把Solr当成关系型数据库来使用 .
  • 非结构化的数据支持: Solr 为了准确的索引列数据,需要确定列的数据类型 (文本索引与数字索引是有差异的). 对关系弄数据库表来说这很简单, 所有的列都提前定义好了. 但是,在 NOSQL中, 列类型是不可预知的, 并且数据是一组组键值对,  Solr是怎么知道列的数据类型的呢? Solr通过使用约定俗成的命名规则来解决这个问题,例如, 文本字段的列名是以 “t_”开头 . 多亏了这个, Solr才可以支持NOSQL 非结构化的数据.
  • Solr的分析组件Bloomberg : Bloomberg 的金融服务广泛的使用Solr, 由此发现它的统计包中含有严重bug. 所以他们设计开发了高性能组件用于处理复杂计算与聚合有序数据,在最后将它开源了.
第 2 段(可获 6.7 积分)

如今, Solr 再也不仅仅支持文本搜索. 它包含一个高速的高可用 SQL/NOSQL 数据库,可以执行聚合与复杂的实时计算. 这并非纸上谈兵 – Ness的客户有使用Solr提供的实时聚合,并同时对数百个用户活动行为做分析. Solr 已经达到一个高度,它并不局限于文本索引引擎. 对其它产品来说这是可替代的,比如 Spark 和 Amazon Redshift 对大数据做实时聚合.

结束语: Solr 有一个新的竞争对手叫 ElasticSearch, 它也是基于 Lucene. 这两种产品功能方面并驾齐驱, 一个产品如果添加了新功能,你可以很快的在另一个产品中找到相同的功能. 在这里我并非偏向某一方 — 写在这里的一切, 关于Solr都是真实的,同样的Elasticsearch也是。但是Solr的蜕变更加惊艳,毕竟Solr经历了12年的改进. 有个笑话说,上帝可以在6天内创建整个世界,是因为他并不需要参照其它模板(可随心所欲的创建).  Solr 的实时分析引擎,它必须支持重建,因此Solr团队必须支持这项功能.它理应得到我们的钦佩.

第 3 段(可获 2.73 积分)

文章评论