0. 运行环境
solr 需要运行在一个Servlet容器中,Solr5.3.1要求jdk使用1.8以上,Solr默认提供Jetty(java写的Servlet容器),
使用jetty启动:
使用cmd命令行,进入bin文件夹启动
启动命令solr.cmd start
启动后访问地址:http://127.0.0.1:8983/solr
但是企业中一般使用Tomcat作为服务器,本课程也是一样,
相关环境如下:
- Solr:5.3.1
- Jdk环境:1.8(solr5.3.1 不能使用jdk1.8以下)
- 服务器:Tomcat 8
1 Solr在tomcat中的配置
1.1 SolrHome和SolrCore
SolrHome是Solr服务运行的主目录,该目录中包括了多个SolrCore目录。SolrCore目录中包含了运行Solr实例所有的配置文件和数据文件,Solr实例就是SolrCore。
每个SolrCore提供单独的搜索和索引服务。
1.1.1 目录结构
SolrCore目录:
1.2 Tomcat运行Solr配置
1.2.1 准备tomcat
解压tomcat
1.3 配置Solr项目
Solr包含2部分,一部分是Solr的web项目,另一部分是web项目对应的配置(solrhome),web项目在server/solr-webapp/webapp
目录下,在tomcat的webapp下创建solr目录,将webapp目录下的所有文件拷贝到tomcat的webapp目录下,如下图:
拷贝后如下图:
把solr-5.3.1\server\resources目录下的log4j.properties
拷贝到
tomcat/webapp/solr/WEB-INF/classes
目录下。
1.4 配置solrhome
在tomcat的webapp的solr目录下创建solrhome,将solr-5.3.1\server\solr目录下的solr.xml
拷贝到solrhome
目录下。
1.5 solr项目和solrhome建立关联
修改solr/WEB-INF/web.xml,将节点env-entry-value
的值换成solrhome
目录。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/solr/apache-tomcat-8.5.23/webapps/solr/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
启动tomcat,访问httpL//localhost:8080/solr
3. 配置solr - solrconfig.xml文件
3.1 配置solrCore
1、在solrhome目录下创建collection1目录
2、将solr-5.3.1\server\solr\configsets\sample_techproducts_configs的conf目录拷贝到collection1目录下
3、在httpL//localhost:8080/solr目录上点击addcore操作
此时,目录下会自动创建一个data,目录和core.properties文件
这里所有配置其实就是配置SolrCore目录下的conf/solrconfig.xml
这个文件是来配置SolrCore实例的相关信息。如果使用默认配置可以不用做任何修改。它里面包含了不少标签,但是我们经常使用的标签为:lib标签、datadir标签、requestHandler标签。
3.2 solr需要的jar包
在solrconfig.xml中可以加扩展载一些的jar,如果需要使用,则首先要把这些jar复制到指定的目录,我们复制到solrhome同级目录
复制之前解压的文件夹中的contrib
和dist
文件夹
粘贴到solrhome
目录下。
修改solrconfig.xml配置文件加载扩展的jar。
configsolr.install.dir表示${solrcore}的目录位置也就是collection1,在这里配置好相对路径,我这里是进行了如下修改:
./ 表示当前目录 ../表示上一级目录
修改前
<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:../../../..}/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:../}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-\d.*\.jar" />
3.3 配置SolrCore的data目录。
data目录用来存放SolrCore的索引文件和tlog日志文件
solr.data.dir表示${solrcore}/data的目录位置
如果不想使用默认的目录也可以通过solrconfig.xml
更改索引目录 ,
例如:
(建议不修改,否则配置多个SolrCore会报错)
3.4 requestHandler标签
requestHandler请求处理器,定义了索引和搜索的访问方式。
通过/update维护索引,可以完成索引的添加、修改、删除操作。
通过/select搜索索引。
设置搜索参数完成搜索,搜索参数也可以设置一些默认值,如下:
<requestHandler name="/select" class="solr.SearchHandler">
<!-- 设置默认的参数值,可以在请求地址中修改这些参数-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int><!--显示数量-->
<str name="wt">json</str><!--显示格式-->
<str name="df">text</str><!--默认搜索字段-->
</lst>
</requestHandler>