Solr:不止于文字

本译文自 Moshe Kranchttps://dzone.com发表的 Solr: Not Just For Text Anymore,文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。

Solr于2004年首次创建时,打算成为OpenSource文本搜索引擎,为企业网站和内部文档搜索等用途提供类似Google的搜索功能。 基于Lucene搜索库,Solr添加了一个客户端 - 服务器体系结构,一个RESTful API以及用于文本查询的一些语法块。

快进到2016年,Solr已经从企业搜索引擎或穷人的Google发展成为实时大数据分析的可行选择,与Redshift,Spark和Presto等产品展开竞争。 蜕变是渐进的,所以你可能已经错过了。 这儿是一些精彩片段:

  • 支持非文本字段:早期,Solr引入了定义非文本字段(如数字和日期)的功能。为什么这在文本搜索引擎中很有用?例如,除了描述电影标题的文本字段之外,还可能需要定义电影的发行年份。然后用户可以搜索在2005年到2008年之间制作的所有电影,其标题包括“战斗”一词。
  • 分面搜索:这是将搜索结果动态聚类到类别中,以便用户可以根据字段中的任何值深入搜索结果。例如,假设可用作业的数据库包含“城市”字段和“位置”字段。然后,用户可以搜索所有软件工程师职位,并查看每个城市有多少个开放的软件工程师职位。或者,用户可以搜索波士顿的所有职位,并查看波士顿每种职位的打开情况。 (注意,faceting实际上是一种高速聚合形式,即计算给定字段的所有值的实例数量,而不需要预聚合。)
  • 高可用性和可扩展性:2012年发布的SolrCloud提供了Solr节点的集群。数据在集群中的节点之间自动分割并复制,查询自动分布在整个集群中,并自动执行节点故障切换。通过SolrCloud,Solr成为了可以信任任务关键型数据和操作的行业优势产品。
  • 性能改进:在早期,向Solr添加新数据需要重建整个索引。这使得Solr成为一个非常静态的产品 - 索引重建计划在下班时间进行,在此之前没有新的数据可以搜索。后来的版本通过内存索引实现了即时更新,补充了主要的基于磁盘的索引。 Solr还添加了多层缓存,以便经常重复的查询(或部分查询)不需要重新运行。
  • SQL支持:Solr查询语言与SQL相似,但不是SQL,因此它不适用于SQL兼容工具,例如Tableau等分析可视化工具。最近的Solr版本增加了对SQL的支持以及JDBC驱动程序。现在,Solr可以用作任何关系数据库的替代品。
  • 非结构化数据的无模式支持:Solr需要知道给定字段的类型才能正确索引(索引文本与索引数字非常不同)。对于关系表而言,这是很好的,所有列都是事先知道的。但是,在NOSQL的世界里,事先并不知道列,数据是一组任意的键值对,Solr怎么知道字段类型呢? Solr想出了一个基于用户定义的命名约定的解决方案,例如,如果字段名称以“t_”开头,那么它是一个文本字段。得益于此,Solr可以支持NOSQL非结构化数据。
  • 彭博分析组件Solr:彭博金融服务公司广泛使用Solr,发现现有的统计软件包非常缺乏。因此,他们开发了一个高性能的框架,可以对时间序列数据执行复杂的计算和聚合,然后将其发布到OpenSource。

今天,Solr不仅仅是用于文本搜索。它是一个高速,高可用性的SQL / NOSQL数据库,可以实时执行聚合和其他复杂的计算。这不仅仅是理论 - Ness的客户在生产中使用Solr来为数百个同时在线的用户提供实时聚合和时间序列分析。 Solr已经发展到不仅仅是文本索引引擎的地步。对Spark和Amazon Redshift等其他产品来说,这是一个可行的替代方案,可以对大数据进行实时聚合。

结语:Solr有一个名叫ElasticSearch的年轻竞争对手,它也是基于Lucene。这两种产品在功能上相互竞争,一种产品的新特性正在迅速渗透到另一种产品中。我不打算在这个竞赛中占据一席之地 - 在这里写的关于Solr的所有内容在ElasticSearch中也是如此。但是,由于Solr在过去十二年中所经历的蜕变,Solr的故事更加引人注目。正如这个笑话所说,G-d只能在6天内创造这个世界,因为他不需要支持一个已经安装的基地。 Solr团队不得不重新创建Solr作为实时分析引擎,同时继续支持已安装的基础,为此,他们值得我们的钦佩。

原文链接:https://dzone.com/articles/solr-not-just-for-text-anymore

原文作者:Moshe Kranc

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网高可用架构

Java核心必读书籍共享资料下载

5535
来自专栏IT派

【PHP框架】 Laravel vs Yii2 到底哪个是未来?

性能和速度,一个框架的趋势,绝对不是因为这两个因素决定的,会有很小的影响,这当然了,不过不会有太大的影响。

1500
来自专栏Albert陈凯

2018-11-06 成为一个专业的程序员前言

https://github.com/stanzhai/be-a-professional-programmer

772
来自专栏Golang语言社区

Terratest:一个用于自动化基础设施测试的开源Go库

Gruntwork开源了他们的Go框架Terratest。该框架可以用于编写测试基础设施的自动化测试。该库内置了对Terraform和Packer的支持。

1213
来自专栏企鹅号快讯

如何改善遗留的代码库

作者 | Jacques Mattheij 译者 | aiwhj 在每一个程序员、项目管理员、团队领导的一生中,这都会至少发生一次。原来的程序员早已离职去度假了...

1737
来自专栏杨建荣的学习笔记

最近的几个技术问题总结和答疑(八)(r9笔记第82天)

今天的技术问答是刘晨兄的一个问题,提问来自于我新书中的一个实验,刘晨兄非常认真,对我书中的很多细节都进行了测试。 ? 看到这个错误,如果出现end-of-f...

3417
来自专栏LiveEdu在线科技教育平台

如何选择PHP框架?

PHP是世界上最受欢迎的编程语言之—。最近发布的PHP7令这种服务器的编程语言比以前变得更好,更稳定了。

3198
来自专栏晓晨的专栏

ASP.NET Core 2.0 支付宝当面付之扫码支付

1032
来自专栏菩提树下的杨过

Flash/Flex学习笔记(12):FMS 3.5之如何做视频实时直播

硬件条件:一个摄像头 + 一台FMS服务器即可 原理:摄像头实时采集视频源,然后推送到FMS服务器,其它客户从FMS上获取视频流。 需要做二个fla,一个用于向...

1768
来自专栏JackieZheng

Nodejs学习笔记(一)——初识Nodejs

前言:目前工作的分内之事相对较为单一,希望可以通过工作之余的时间给自己充充电,只是没有一个学伴或大神带,只能说是摸索着前进。起初准备好好研究下Spring这个框...

2397

扫码关注云+社区