一、Solr概述
1.1 概述
Solr 是一个基于 Apache Lucene 之上的搜索服务器,它是一个开源的、基于 Java 的信息检索库。它旨在驱动功能强大的文档检索应用程序 - 无论您需要根据用户的查询将数据服务到何处,Solr 都可以为您服务。Solr与应用程序的集成以为您服务。
下面是一个如何将 Solr 集成到应用程序中的示例
在上述情况下,Solr 与其他服务器应用程序并行运行。例如,在线商店应用程序将提供用户界面、购物车以及为最终用户购买的方式;而库存管理应用程序将允许商店员工编辑产品信息。产品元数据将保存在某种数据库以及 Solr 中。
Solr的官网: http://lucene.apache.org/solr/
1.2 特点
Solr是一个高性能,采用Java开发,
基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
在Lucene 主要有个算法被为
倒排索引:使用关键字去搜索文档
正排索引:使用文档的Id 去查询文档,对比文档里面有没有该关键字
倒排索引:就是利用一个Map 集合搞定
Map<String,List> 这个速度快
正排索引:扫描全表,做个匹配而已
1.3 工作方式
文档通过Http利用XML或者json 加到一个搜索集合中。
查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等
1.4 SolrCloud与Solr,lucene关系
1.4.1 solr与luence的关系
网上有这样的比喻:
(1) lucene是数据库的话,solr就是jdbc
(2) lucene是jar,solr就是一个引用这些jar来写的搜索客户端。Solr是一个可以直接用的应用,而lucene只是一些编程用的库。
1.4.2 Solr与SolrCloud
SolrCloud是Solr4.0版本开发出的具有开创意义的基于Solr和Zookeeper的分布式搜索方案,或者可以说,SolrCloud是Solr的一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式,这些方式部署的Solr不具有SolrCloud的特色功能。
二、Solr的安装
2.1 安装前的概述
1.1,solr是基于lucene而lucene是java写的,所以solr需要jdk----当前安装的solr-7.5需要jdk-1.8及以上版本,下载安装jdk并设置JAVA_HOME即可。
1.2,下载solr,然后解压即可,windows和linux都可以下.tgz(.tgz本质是.tar.gz)和.zip解压出来都一样的。
1.3,在solr5以前solr的启动都有tomcat作为容器,但是从solr5以后solr内部集成jetty服务器,可以通过bin目录中脚本直接启动。就是从solr5以后跟solr4最大的区别是被发布成一个独立的应用。
1.4,在solr5之后solr其实特别容易安装,有安装包,之后在解压,直接启动bin下solr,solr就这样完成的启动了。。
2.2 准备工作
1,安装Docker
2,安装vim
3,安装jdk
搜索
yum -y install java-1.8.0-openjdk
3.安装solr
1.下载solr https://lucene.apache.org/solr/ 2. wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.7.2/solr-7.7.2.tgz
2.3 安装
2)解压solr并移动到/usr/local 3)启动solr 进入solr目录 (1)bin:是脚本的启动目录 (2)contrib:Solr 的contrib目录包含 Solr 专用功能的附加插件目录 (3)dev-tools:跟开发工具相关的包 (4)dist:编译打包后存放目录,即构建后的输出产物存放的目录 (5)docs:solr文档的存放目录 (6)example:示范例子的存放目录,这里展示了DIH,即数据导入处理的例子 (7)server: 此目录是 Solr 应用程序的核心所在。此目录中的 README 提供了详细的概述,但以下是一些特点: Solr 的 Admin UI(server/solr-webapp) Jetty 库(server/lib) 日志文件(server/logs)和日志配置(server/resources)。有关如何自定义 Solr 的默认日志记录的详细信息,请参阅配置日志记录一节。 示例配置(server/solr/configsets) 进入bin目录 bin目录分析 1.1、solr和solr.cmd: 分别是用于* nix系统和Windows系统,根据所选参数不同而控制solr的启动和停止。 1.2、solr.in.sh和solr.in.cmd: 这些是分别用于* unix和Windows系统的属性文件。 1.3、install_solr_services.sh: 此脚本用于* unix系统将Solr作为服务安装 开机自启自动
出现以上问题可以修改启动代码
./solr start -force
启动成功
2.4 测试访问
http://ip:8983/solr/
2.5 启动失败
2.5.1 VM 因为你的虚拟机的防火墙没有关闭
查看防火墙状态
firewall-cmd --state
1
停止firewall
systemctl stop firewalld.service
1
禁止firewall开机启动
systemctl disable firewalld.service
2.5.2 阿里云 对外端口8983 添加安全组
登录官网控制台ECS 添加安全组入方向规则
三、Solr的名词解释及配置文件说明
3.1 索引库
我们导入数据,solr 会被它以某种格式保存在索引库里面!
刚安装的现在没有任何索引库
3.2 索引分词
Solr在导入数据库时,会对某些语句进行分词
3.3 搜索分词
Solr在搜索数据库时,会对某些语句进行分词
3.4 文档
Solr 里面搜索出来的每个数据,都是以xml 文件或json 来表示,这些数据被称为文档
Json->文档
Xml->文件
3.5 字段
文档里面可能有很多的字段,就类似于数据库的字段
3.6 和Mysql的数据库做对比
3.7 配置文件说明
在 Solr 中有几个配置文件,您将在执行过程中与之交互。
这些文件中的很多都是 XML 格式的,尽管与配置设置交互的 API 在需要时往往接受 JSON 以进行编程访问。
3.7.1 Solr Home
在运行 Solr 时,您需要访问主目录。
当您第一次安装 Solr 时,您的主目录是:server/solr。
Solr 主目录包含重要的配置信息,并且是 Solr 将存储其索引的地方。
以下示例显示了 Solr 主目录中的关键部分:
<solr-home-directory>/ solr.xml core_name1/ core.properties conf/ solrconfig.xml managed-schema data/ core_name2/ core.properties conf/ solrconfig.xml managed-schema data/
3.7.2 Solr 配置文件
在 Solr 的目录中,你会发现这些文件:
solr.xml:为您的 Solr 服务器实例指定配置选项。
每个 Solr core:
core.properties:为每个核心定义特定的属性,例如其名称、核心所属的集合、模式的位置以及其他参数。
solrconfig.xml:控制高级行为。例如,您可以为数据目录指定一个备用位置。
managed-schema(或用 schema.xml 替代)描述您将要求 Solr 索引的文档。模式将文档定义为字段集合。您可以同时定义字段类型和字段本身。字段类型定义功能强大,包含有关 Solr 如何处理传入字段值和查询值的信息。
data/:包含索引文件的目录。