一、初识solr:
1、 什么是solr?
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
使用Solr 进行创建索引和搜索索引的实现方法很简单,如下:
- 创建索引:
客户端(可以是浏览器可以是Java程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr服务器根据xml文档添加、删除、更新索引 。 - 搜索索引:
客户端(可以是浏览器可以是Java程序)用 GET方法向 Solr 服务器发送请求,然后对 Solr服务器返回Xml、json等格式的查询结果进行解析。Solr不提供构建页面UI的功能。Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
Solr是一个可以独立运行的搜索服务器,使用solr进行全文检索服务的话,只需要通过http请求访问该服务器即可。
2、Solr和Lucene的区别:
Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索应用。Lucene仅提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索应用。
Solr的目标是打造一款企业级的搜索引擎系统,它是基于Lucene一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。
2、Solr功能预览:
- 灵活的查询语法;
- 支持各种格式文件(Word、PDF)导入并索引;
- 支持数据库数据导入并索引;
- 分页查询和排序
- Facet维度查询;
- 自动完成功能;
- 拼写检查;
- 搜索关键字高亮显示;
- Geo地理位置查询;
- Group分组查询;
- SolrCloud(分布式)
3、Solr下载:
下载地址:https://lucene.apache.org/solr/
Solr学习资源:
二、windows下搭建solr(部署solr至tomcat):
1、solr环境搭建:
1、 本地环境参数:
- 系统:windows 10
- tomcat 容器:tomcat 8.5.54
- jdk:jdk 1.8
- solr:8.5.0
注意:
- solr8.0及以上的版本,要使用tomcat8.0及以上的版本,否则启动报错,起不来!!!
- solr的版本一定要使用适合的tomcat版本,尽量solr版本和tomcat的版本一致,否则会报错。
2、打开下载solr压缩包,并解压,如图:
- bin:solr的运行脚本
- contrib:solr的一些扩展jar包,用于增强solr的功能。
- dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
- docs:solr的API文档
- example:solr工程的例子目录:
- licenses:solr相关的一些许可信息
把solr‐8.x的server/solr‐webapp目录下边的webapp文件夹复制到tomcat/webapps的目录
下,并重命名为solr。
3、将solr‐8.x\server\lib\ext下的所有jar包拷贝到tomcat里的webapps\solr\WEB‐INF\lib下,
如下图:
4、将solr‐8.x\server\lib下 metrics开头的5个jar包也拷贝到tomcat里的webapps\solr\WEB‐INF\lib下:
5、在solr调试的过程中,如果提示jar包的缺失,可以去图中两个文件夹下找到相应的jar包,也拷贝到tomcat里的webapps\solr\WEB‐INF\lib下:
6、在tomcat里的webapps\solr\WEB‐INF下创建classes文件夹,将solr/server/resources下的文件拷贝到新建的classes文件夹下,如图:
注意:这里启动tomcat的时候会报错,是因为这里的配置主要与日志的配置有关,配好日志就不会报错了,可以稍后再调试。
7、在磁盘任意目录创建solr_home文件夹,把solr‐8.x 里面的solr文件夹下的内容放入solr_home中:
新建solr_home:
8、修改webapps\solr\WEB‐INF\web.xml里的solr\home路径,其中value的值为你创建的solr_home的绝对路径:
第一步:在web.xml中添加配置:
第二步:在web.xml中将value的值为你创建的solr_home的绝对路径:
<env-entry>
<env-entry-name>solr/home</env-entry-name>//solr_home的名字
<env-entry-value>D:/liupy/solrs/solr_home</env-entry-value>//solr_home的路径
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
第三步:将<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>
9、启动tomcat测试 http://localhost:8080/solr/index.html#/
2、创建solr的core:
1、 首先在solr_home中创建solr的core:testCore
-
在solr_home 文件夹下新建一个文件夹,文件夹名字自己定,这里取文件夹名为testCore,这个名字就是core的名字;
-
将D:\liupy\solrs\solr_home\configsets\ _default\下的conf文件夹拷贝到testCore下;
-
启动 tomcat, http://localhost:8080/solr/index.html#/进入 solr Admin 管理页面;
2、 在界面中创建solr的core:testCore
- 在solr的图形页面中添加core即可, 名字和刚才新增名字相同,新增页面如下:
添加后:
3、solr7.5. 管理界面功能介绍:
-
Dashboard:
仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。 -
Logging:
Solr运行日志信息。 -
Cloud:
Cloud即SolrCloud,即Solr云(集群),当使用Solr Cloud模式运行时会显示此菜单,该部分功能此处演示没有,因为不是集群。 -
Core Admin:
Solr Core的管理界面。在这里可以添加SolrCore实例(有bug,不推荐使用浏览器界面添加SolrCore)。 -
java properties
Solr在JVM 运行环境中的属性信息,包括类路径、文件编码、jvm内存设置等信息。 -
Tread Dump:
显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。 -
Core selector:
1、选择一个SolrCore进行详细操作,如下:
2、 Analysis:
通过此界面可以测试索引分析器和搜索分析器的执行情况:
3、dataimport:
可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。默认没有配置,需要手工配置。
4、Document:
通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:操作索引有多种格式:xml格式或者solr的格式:
xml格式:
- overwrite=“true” :
solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换 - commitWithin=“1000” :
solr 在做索引的时候,每隔1000(1秒)毫秒,做一次文档提交。为了方便测试也可以在Document中立即提交,后添加“”。
solr的格式:
5、Query:
通过/select执行搜索索引,必须指定“q”查询条件方可搜索。