Solr----1、solr7.2.0+jdk1.8+tomcat8部署解析
近期在项目中要做一个站类搜索,我自然而然就想到了solr,solr的版本在不断的更新,功能也越全,所以我决定使用最新版的7.2.0,那么为什么非得用solr里?
1. 什么是solr
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
使用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为基础构建全文检索应用。
Solr的目标是打造一款企业级的搜索引擎系统,它是基于Lucene一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。
3. Solr安装配置
Solr和lucene的版本是同步更新的:solr-7.2.0.zip
下载地址:http://archive.apache.org/dist/lucene/solr/
Linux下需要solr-7.2.0.tgz,windows下需要solr-7.2.0.zip。
环境要求:
Solr:7.2.0
jdk环境:1.8(不能使用jdk1.8以下)
服务器:Tomcat 8
解压solr-7.2.0.zip,目录如下:
在Tomcat8文件加下新建solr_h
在solr_h文件夹下新建solrhome
SolrHome和SolrCore
Solrhome是solr服务运行的主目录,一个solrhome目录里面包含多个solrcore目录,一个solrcore目录里面了一个solr实例运行时所需要的配置文件和数据文件。每一个solrcore都可以单独对外提供搜索和索引服务。多个solrcore之间没有关系。
在Tomcat8\webapps下新建solr文件夹,将solr-7.2.0\server\solr-webapp\webapp下文件全部复制Tomcat8\webapps\solr到文件夹中
将solr-7.2.0的server/solr-webapp/lib/ext下的所有jar包复制到上一步solr/WEB-INF/lib下;
将solr-7.2.0的server/solr-webapp/lib下的metrics-*和gmetric4j-1.0.7.jar复制到上一步的lib目录下;
将solr-7.2.0的server/resources目录下的log4j.properties文件复制到WEB-INF/classes目录下,默认没有classes目录,自己创建;
(可选)在tomcat配置solr日志存放目录,在tomcat安装目录下,打开tomcat8\bin目录,找到catalina.bat文件,用文本编辑器打开该文件,找到:gotJsseOpts这句所在的位置,在set"JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"这句后面加上以下两句:
rem add solr log path
set "JAVA_OPTS=%JAVA_OPTS%-Dsolr.log.dir=../logs/"(注:等号后面的路径可根据实际情况自己配置)。
需要修改的地方:Tomcat8\webapps\solr\WEB-INF\web.xml,在这个xml中放开此注释,修改env-entry-value的路径为solrhome所在的路径
并在这个web.xml的最后注释此代码
<!-- <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> -->
注意:如果你的tomcat中还要运行别的服务,还要修改tomcat8\conf\server.xml,如果就只有一个solr,直接启动就可以访问
<Context path="/solr/" docBase="E:\Tomcat8\webapps\solr" reloadable="false" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="E:\Tomcat8\solr_h\solrhome" override="true"/>
</Context>
docBase:表示tomcat8\webapps\中的solr
value:表示E:\Tomcat8\solr_h\中的solrhome
最后通过http://localhost:8888/solr/index.html#/访问就可以了