1. Solr简介
前言
学习Solr需要一些和java相关的储备知识,在此之前,假设您已经:
- 拥有Java开发环境以及相应的IDE
- 熟悉Spring Boot
- 熟悉Maven
- 熟悉Lucene
如果大家是一名java开发工程师,我想大家有需求要学习Solr,应该上边的前3条要求都不是问题,至于为什么要学习Lucene呢? 因为Solr是基于Lucene开发的全文检索服务。也可以简单理解为,solr依赖于Lucene,是Lucene的一种封装。这个在后边也会详细介绍。
1.1 Solr 是什么
- Solr是Apache旗下基于Lucene开发的全文检索的服务。 用户可以通过http请求,向Solr服务器提交一定格式的数据,比如说XML,JSON数据,来完成索引库的索引。也可以通过Http请求查询索引库获取返回结果,返回结果也可以使XML和JSON格式的。
Solr和Lucene的区别
- Lucene是一个开发源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能, 或者以Lucene为基础构建全文检索引擎。
Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以单独运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。
1.2 Solr的发展历程
- 2004年,CNET NetWorks公司的Yonik Seeley工程师为公司网站开发搜索功能是完成呢过了Solr的雏形。起初Solr只是CNET公司的内部项目。
- 2006年1月,CNET公司决定将Solr源码捐赠给Apache软件基金会。
- 2008年9月,Solr1.3发布了新功能,其中包括分布式搜素和性能增强等功能。
- 2009年11月,Solr1.4版本发布,此版本对索引,搜索,Facet等方面进行了优化,提高了对PDF,HTML等富文本文件处理能力,还推出了许多额外的插件;
- 2010年3月,Lucene和Solr项目合并,自此,Solr成为了Lucene的子项目,产品现在由双方的参与者共同开发。
- 2011,Solr改变了版本编号方案,以便于Lucene匹配。为了是Solr和Lucene有相同的版本号,Solr1.4下一版的版本变为3.1。
- 2012年10,Solr4.0版本发布,新功能Solr Cloud也随之发布。
- 目前Solr最新版本8.8.2
1.3 Solr的功能优势
- 灵活的查询语法;
- 支持各种格式文件(Word,PDF)导入索引库;
- 支持数据库数据导入索引库;
- 分页查询和排序
- Facet维度查询
- 自动完成功能
- 拼写检查
- 搜索关键字高亮显示
- Geo地理位置查询
- Group分组查询
- Solr Cloud
1.4 为什么要用solr
- solr是将整个索引操作功能封装好了的搜索引擎系统(企业级搜索引擎产品)
- solr可以部署到单独的服务器上(web服务),它可以提供服务,我们的业务系统就只要发送请求,接收响应即可,降低了业务系统的负载。
- solr部署在专门的服务器上,它的索引库就不会受到业务服务器存储空间的限制。
- solr支持分布式集群,索引服务的容量和能力可以线性扩展。(solr4开始支持集群)
2.下载和安装
2.1 下载
官网地址:
2.3 Window下安装Solr
window系统是哦我们平时开发和学习使用的一个平台,我们首先先来学习如何在windows系统中安装soolr;
2.3.1 运行环境
Solr需要运行在一个Servlet容器中,Solr7.x要求JDK最少使用1.8以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tomcat作为Servlet容器,环境如下:
Solr: Solr7.x
jdk:jdk1.8
tomcat: tomcat8.5
2.3.2 安装步骤
- 下载solr-7.zip并解压;
目录布局
- bin
此目录中包含几个重要的脚本,这些脚本将使使用Solr更容易。- solr 和 solr.cmd
这是solr的控制脚本,也称为bin/solr
(对于linux)或者bin/solr.cmd(对于Windows)。这个脚本是启动和停止Solr的首选工具。您也可以再运行SolrCloud模式时创建集合或者内核、配置身份验证以及配置文件。 - post
Post Tool ,它提供了用于发布内容到Solr的一个简单的命令行界面。 - solr.in.sh 和 solr.in.cmd
这些分别是为linux 和 windows 系统提供的属性文件。在这里配置了Java、Jetty和Solr的系统级属性。许多这些设置可以再使用bin/solr或者bin/solr.cmd时被覆盖,但这允许您在一个地方设置所有的属性。 - install_solr_service.sh
该脚本用于linix系统以安装Solr作为服务。
- solr 和 solr.cmd
- contrib
Solr的contrib
目录包含Solr专用功能的附件插件。 - dist
该dist
目录包含主要的Solr .jar文件。 - docs
该docs
目录包括一个链接到在线Javadocs的Solr。 - example
该example
目录包括演示各种Solr功能的几种类型的示例。 - licenses
该licenses目录包括Solr使用的第三方库的所有许可证。 - server
- 此目录是Solr应用程序的核心所在。此目录中的README提供了详细的概述,但以下是一些特点:
- Solr的Admin UI (
server/solr-webapp
) - Jetty库(
server/lib
) - 日志文件(
server/logs
)和日志配置(server/resources
). - 示例配置(
server/solr/configsets
)
- Solr的Admin UI (