目录
1.概述
1.1 定义
Solr 是一个基于 Apache Lucene 之上的搜索服务器,它是一个开源的、基于 Java 的信息检索库。它旨在驱动功能强大的文档检索应用程序 - 无论您需要根据用户的查询将数据服务到何处,Solr 都可以为您服务。Solr与应用程序的集成以为您服务。
下面是一个如何将 Solr 集成到应用程序中的示例
在上述情况下,Solr 与其他服务器应用程序并行运行。例如,在线商店应用程序将提供用户界面、购物车以及为最终用户购买的方式;而库存管理应用程序将允许商店员工编辑产品信息。产品元数据将保存在某种数据库以及 Solr 中。
Solr的官网: http://lucene.apache.org/solr/
1.2 特点
Solr是一个高性能,采用Java开发,
基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
在Lucene 主要有个算法被为
- 倒排索引:使用关键字去搜索文档。就是利用一个Map 集合搞定Map<String,List<ID>> 这个速度快
- 正排索引:使用文档的Id 去查询文档,对比文档里面有没有该关键字。扫描全表,做个匹配而已
1.3 工作方式
文档通过Http利用XML或者json 加到一个搜索集合中。
查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等
1.4 SolrCloud与Solr,lucene关系
1.4.1 solr与luence的关系
Many people new to Lucene and Solr will ask the obvious question: Should I use Lucene or Solr?
The answer is simple: if you're asking yourself this question, in 99% of situations, what you want to use is Solr.
A simple way to conceptualize the relationship between Solr and Lucene is that of a car and its engine. You can't drive an engine, but you can drive a car. Similarly, Lucene is a programmatic library which you can't use as-is, whereas Solr is a complete application which you can use out-of-box.
网上有这样的比喻:
- lucene是数据库的话,solr就是jdbc
- lucene是jar,solr就是一个引用这些jar来写的搜索客户端。Solr是一个可以直接用的应用,而lucene只是一些编程用的库。
1.4.2 Solr与SolrCloud
SolrCloud是Solr4.0版本开发出的具有开创意义的基于Solr和Zookeeper的分布式搜索方案,或者可以说,SolrCloud是Solr的一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式,这些方式部署的Solr不具有SolrCloud的特色功能。
2. Solr安装
2.1 安装前说明
- solr是基于lucene而lucene是java写的,所以solr需要jdk----当前安装的solr-7.5需要jdk-1.8及以上版本,下载安装jdk并设置JAVA_HOME即可。
- 下载solr,然后解压即可,windows和linux都可以下.tgz(.tgz本质是.tar.gz)和.zip解压出来都一样的。
- 在solr5以前solr的启动都有tomcat作为容器,但是从solr5以后solr内部集成jetty服务器,可以通过bin目录中脚本直接启动。就是从solr5以后跟solr4最大的区别是被发布成一个独立的应用。
- 在solr5之后solr其实特别容易安装,有安装包,之后在解压,直接启动bin下solr,solr就这样完成的启动了。
2.2 下载
地址:https://lucene.apache.org/solr/downloads.html
网速好的话,可以直接下载
wget http://archive.apache.org/dist/lucene/solr/7.7.3/solr-7.7.3.tgz
网速不好,就复制连接,然后放到迅雷里面下载,然后再上传到服务器。
2.3 启动solr
2.3.1 进入solr目录,目录分析
- bin:是脚本的启动目录
- contrib:Solr 的contrib目录包含 Solr 专用功能的附加插件目录
- dev-tools:跟开发工具相关的包
- dist:编译打包后存放目录,即构建后的输出产物存放的目录
- docs:solr文档的存放目录
- example:示范例子的存放目录,这里展示了DIH,即数据导入处理的例子
- server: 此目录是 Solr 应用程序的核心所在。此目录中的 README 提供了详细的概述,但以下是一些特点:
- Solr 的 Admin UI(server/solr-webapp)
- Jetty 库(server/lib)
- 日志文件(server/logs)和日志配置(server/resources)。有关如何自定义 Solr 的默认日志记录的详细信息,请参阅配置日志记录一节。
- 示例配置(server/solr/configsets)
2.3.2 进入bin目录,目录分析
- solr和solr.cmd:分别是用于* nix系统和Windows系统,根据所选参数不同而控制solr的启动和停止。
- solr.in.sh和solr.in.cmd:这些是分别用于* nix和Windows系统的属性文件。
- install_solr_services.sh:此脚本用于* nix系统将Solr作为服务安装
2.3.3 启动
./solr start
出现以上问题可以修改启动代码
./solr start -force
到此启动成功
2.4 测试验证
2.5 安装可能存在的问题
2.5.1 无法启动
如果上面的没有显示pid的值,说是有没有启动成功
原因:因为你的服务器配置太低,并关闭一个其它暂时用没用到服务
2.5.2 启动成功之后无法访问
如果是阿里云服务器
VM 因为你的虚拟机的防火墙没有关闭
#查看防火墙状态
firewall-cmd --state
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
申明:内容来着网络,仅供学习使用