Solr官网: https://lucene.apache.org/solr/
Solr使用文档(7.5版本): http://lucene.apache.org/solr/guide/7_5/index.html
Solr介绍
Solr引入
用过Lucene的都知道,需要在某个应用写很多API进行分词、索引、搜索,那问题来了,如果公司有很多应用,那么如果继续使用Lucene的话,会变成这个样子:
每一个应用都要继承一套Lucene,这样不便于扩展、维护,我们希望的应该是如下的情形:
那么有没有开源的、现成的、独立的搜索服务呢?答案就是Solr、ElasticSearch,这里我们说Solr。
Solr是基于Lucene的流行、高性能的开源企业级搜索平台,Lucene下的子项目。
Solr特性
Solr:独立地提供全文搜索服务
具有如下特性
- 独立的企业级搜索服务,基于http以类-REST API 对外提供服务
可以通过http协议将文档以JSON/XML/CSV/binary格式发送给Solr进行索引
可以通过http GET 请求进行查询,可返回JSON/XML/CSV/binary格式的搜索结果 - 近实时的索引能力
文档数据提交索引后,立马就可看到
- 先进的全文检索能力
基于Lucene的强大搜索能力,支持任意数据类型的短语、通配、连接、分组等等查询
- 综合的管理界面
Slor内建了综合的管理用户界面,让你方便的管理你的solr实例
- 通过简单的配置方式来提供高灵活性、适用性.
- 高伸缩和容错能力
基于zookeeper,solr支持分布式、备份、再平衡,来提供高伸缩和容错能力
- 插件体系架构,易扩展
Solr发布了许多定义良好的扩展点,这使得插件很容易插入索引和查询时的过程中
大致使用流程
- 第一步:在solr中定义一个schema(模式),来告诉solr你要索引的文档document由哪些Field构成
- 第二步:将需要让用户搜索的文档发送给solr
- 第三步:在你的应用中公开搜索功能,应用的搜索功能通过调用Solr的搜索API实现