技术帮
 

Solr是什么?

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

1472955908895017376.png说两句


Solr是一种开放源码的、基于 Lucene的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:


1474898515444058446.png 我为什么要选用Solr

如果你打算选用Solr,首先是因为您有一些大数据,怎么定义大数据呢?最少单表要达到百万条记录才勉强算是大数据,如果您的数据量不够大,那最好想想其他的办法进行数据优化,因为实在没必要采用Solr。

1474898515444058446.png 大数据量就一定适合用Solr吗?

这个也不一定,Solr适合用在全文检索的情况下,而对于直接命中的精确检索实在没必要用全文检索。

例1:交管系统中保存了大量的汽车牌照的数据以及车辆行驶相关的数据,数据量岂止亿计,但每次检索数据的时候都是准确的录入车牌号的每一位数字和字母,这就是精确的对车牌号码字段进行检索,完全没必要采用Solr。

例2:某电商平台,存放了大量的商品,数据量仅几百万,但用户搜索商品的时候普遍都是模糊搜索商品名称,如果采用关系型数据库进行查询。性能就会很差,这种时候就适合采用Solr进行商品名称的全文索引。

1474898515444058446.png 什么是全文索引?

我们首先要明确以下几点:

1 关系型数据库的检索速度的提升主要依靠创建索引,假如查询某个表速度很慢,创建合适的索引后速度将得到极大的提升。

2 关系型数据库进行模糊查询主要手段就是like语句,这种方式的检索是无法使用索引来提高效率的。即Like语句查询的时候索引不生效。

因此SQL语句性能优化就有一个原则:尽量杜绝使用like。

但实际业务又不可避免的需要使用like进行模糊查询。

like模糊查询就是在一个或多个字段的全文内容中进行检索,如何能够用Like还保证很高的性能呢?解决手段就是在这些字段中建立全文索引。

技术原理

首先说索引是什么?索引是对查询数据表的检索条件列的内容重新进行优化排序,生成一个新的索引数据表,当写SQL语句检索数据的时候,首先在索引表中查找数据,这个速度要比原表速度快的多,因为索引表只针对那个要查询的字段进行存储,而且存储的形式特别容易查,速度自然就快。

但索引必须是对字段内容的完全匹配存储,是不可能将内容分拆成多段内容再创建索引的。

因此,索引是无法对Like的模糊查询生效,自然无法提高查询效率。

解决这个问题是有思路的,就是将字段的内容拆成一个个的词,然后对这些词创建索引,这样不就可以提高查询效率了?说的好,百度、谷歌、雅虎等等搜索引擎都是基于这个思路进行搜索的。

这个思路就是创建全文索引。


前面啰嗦了这么第一大堆,就是想引出这句话:Solr就是用来创建全文索引的,从而实现全文检索。