简介
Solr 采用 Java5 开发,是建立在 Apache Lucene™上的流行的、快速的开源企业搜索平台。
Solr 具有高度可靠、可伸缩和容错能力,提供分布式索引、复制和负载平衡查询、自动故障转移和恢复、集中配置等功能。
Solr 为世界上许多最大的互联网站点的搜索和导航功能提供了动力。
特性
- 高级全文搜索能力:由Lucene ™提供支持,Solr可实现强大的匹配功能,包括短语,通配符,联接,分组以及任何数据类型
- 针对大容量流量进行了优化:
- 拥有基于标准的开放式接口- XML、JSON 和 HTTP
- 综合的管理界面
- 实现轻松监控
- 高度的可扩展性和容错性
- 灵活的适应性,易于配置
- 能够实时索引
- 可扩展的插件架构
相关链接
Solr 各版本下载地址:http://archive.apache.org/dist/lucene/solr/
Solr 官方网站:http://lucene.apache.org/solr/resources.html
安装配置
下载
Solr与lucene版本是同步更新的
书写笔记时用的版本: 8.5.1
启动solr
自带的启动服务器是Jeety
solr的启动、停止、查看命令:
- 启动: bin\solr.cmd start
- 停止: bin\solr stop 或 solr stop -all
- 查看: ==bin\solr status
访问地址:http://localhost:8983/solr
Tomcat安装运行环境
- jdk1.8以上
- Solr 8.5.1
- Web服务器:tomcat9
操作步骤
准备Tomcat8/9
修改默认端口+1~端口随意
找到如下内容
D:\RunServer\solr-8.5.1\server\solr-webapp
【webapp】
复制到Tomcat下,并命名为solr
D:\RunServer\apache-tomcat-9.0.22-solr8.5-8081\webapps
【webapp】重命名【solr】
复制lib
将D:\RunServer\solr-8.5.1\server\lib\ext下所有jar包,以及D:\RunServer\solr-8.5.1\server\lib下以metrics开头的jar、gmetric4j的jar复制到D:\RunServer\apache-tomcat-9.0.22-solr8.5-8081\webapps\solr\WEB-INF\lib
复制配置文件
在D:\RunServer\apache-tomcat-9.0.22-solr8.5-8081\webapps\solr\WEB-INF中,新建【classes】文件夹,将D:\RunServer\solr-8.5.1\server\resources下文件复制到上面新建的文件夹中,Jeety相关可以忽略
创建 SOLR HOME 目录【solr_home】
在D:\RunServer\apache-tomcat-9.0.22-solr8.5-8081\webapps\solr\WEB-INF中,新建【solr_home】文件夹
拷贝D:\RunServer\solr-8.5.1\server\solr下所有文件、文件夹复制到上面新建的【solr_home】文件夹
拷贝D:\RunServer\solr-8.5.1下【contrib】、【dist】文件夹复制到上面新建的【solr_home】文件夹
在上面新建的【solr_home】目录中新建【demo_core】文件夹,并拷贝D:\RunServer\solr_home\configsets\sample_techproducts_configs目录下【conf】文件夹至D:\RunServer\solr-8.5.1
修改solrconfig.xml
修改D:\RunServer\solr_home\demo_core\conf中solrconfig.xml文件第75行,修改lib指向路径当前路径
修改前
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
修改后
<lib dir="${solr.install.dir:../}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-ltr-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-\d.*\.jar" />
修改web.xml
修改D:\RunServer\apache-tomcat-9.0.22-solr8.5-8081\webapps\solr\WEB-INFweb.xml文件
新增如下部分,默认是注释掉的。
其中env-entry-value值为solr_home对应值,及solr_home目录
添加
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/RunServer/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
注释前
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
注释后
<!--<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>-->
访问测试
http://{ip}:{port}/solr/index.html
http://localhost:8081/solr/index.html
常见问题
从Solr7开始内置log4j升级至log4j2,而log4j2不再支持properties配置文件而需要使用json或xml来配置
因为不使用日志文件,直接注释掉log4j2.xml的标签
启动tomcat时候可能会报错IOException / ${sys:solr.log.dir}/solr_slow_requests.log路径非法等问题
【解决办法】:
将classes下的log4j2.xml更改:将所有的${sys:solr.log.dir}替换为./logs即可
替换前
<RollingRandomAccessFile
name="SlowLogFile"
fileName="${sys:solr.log.dir}/solr_slow_requests.log"
filePattern="${sys:solr.log.dir}/solr_slow_requests.log.%i" >
替换后
<RollingRandomAccessFile
name="MainLogFile"
fileName="./logs/solr.log"
filePattern="./logs/solr.log.%i" >
solr界面介绍
Dashboard - 仪表盘
显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。
Logging - 日志
显示Solr运行出现的异常或错误。
Core Admin
Solr Core的管理界面。这里可以添加SolrCore实例。
- Add Core – 添加核心
- Unload – 卸载核心
- Rename – 重命名核心
- Reload – 重新加载核心
- Optimize – 优化索引库
Add Core
主要是在instanceDir对应的文件夹里生成一个core.properties文件
demo_code
java properties
Solr在JVM运行环境中属性信息,包括类路径、文件编码、jvm设置等信息。可查看java相关的一些属性的信息
Tread Dump
显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。
Core selector
需要在Core Admin中添加core后才有可选项。
Analysis
通过此界面测试索引分析器和搜索分析器的执行情况。
注:solr,分析器是绑定在域的类型中的
Dataimport
可以定义数据导入处理器,从关系数据库将数据导入到solr索引库中。默认没有配置,需要手工配置。
graph TD
st[web]-->a{Document database}
a-->c((database))
Documents
操作索引库
Query
检索数据