1.Solr的安装配置
- Solrhome和SolrCore:
-
Solrhome是一个目录,它是Solr运行的主目录,它包括多个SolrCore目录。SolrCore目录就是Solr实例运行的配置文件和数据文件
-
Solrhome中可以包括多个SolrCore,每个SolrCore互相独立,而且可以单独对外提供搜索和索引服务(Solrhome类似于服务器安装的数据库Mysql,一个mysql数据软件中可以创建多个数据库(solrCore),这多个数据库实例相互独立,可以独立对外提供服务)
- Solr目录结构
- 下载完成后,解压后得到Solr的目录,大致如下:
---根目录
|---bin //Solr的脚本
|---contrib //Solr为了增加自身功能,所添加的扩展依赖包
|---==dist== //Solr build过程时产生的war包和jar包,还有它它的一些依赖包
|---docs //文档
|---licenses //
|---example //例子程序目录
|---solr //配置了Solr运行时的信息,它是一个标准的Solrhome目录
|---bin
|---collection1 //这是一个SolrCore
|---conf //该SolrCore的运行配置信息
|---data //该目录主要存储了索引文件,刚刚下下来是没有是没有的,需要创建
|---solr.xml //....
|---...
|---multicore //可以配置多个SolrCore目录
|---webapps //例子程序目录
|---solr.war
|---...
|---...
- 创建SolrCore
- 创建SolrCore需要先创建SolrHome:拷贝${solr_home}/example/solr到指定目录,为避免重名,可以将拷贝后的目录改名(例如SolrHOme),拷贝后的SolrHome默认就有一个SolrCore(名字就是collections)
2.Solr部署到Tomcat中
- solr需要运行在一个Servlet容器中,它默认通过了一个servlet容器(jetty),实际项目中大多使用tomcat
下面${solr_install}目录表示solr的安装目录,不是solrhome的目录
-
把solr的war部署到tomcat中:直接将${solr_install}/example/webapps/solr.war拷贝到tomcat的webapps目录
-
将solr.war解压
-
添加需要的扩展包(主要是日志包):将${solr_install}/example/lib/ext下的几个jar包拷贝到${tomcathome}/webapps/solr/WEB-INF/lib目录下,${tomcathome}/webapps/solr即是solr.war解压后的目录,
-
添加log4j的配置文件:第三部添加的日志jar包使用的log4j日志,需要添加log4j.properties文件,我们将${solr_install}/example/resources目录下的log4j.properties文件拷贝到{tomcathome}/webapps/solr/WEB-INF/classes目录,classes是javaweb项目存放字节码文件的目录,没有该文件的话,手动创建即可
-
修改web.xml文件并制定solrhome的目录: 修改{tomcathome}/webapps/solr/WEB-INF/web.xml文件中的env-entry属性,并指定env-entry-value的值为我们刚才拷贝出来的solrhome的路径:E:\KSoft\Solr_Resp\SolrHome
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:\KSoft\Solr_Resp\SolrHome</env-entry-value><!-- 指定solrhome的位置 -->
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- 启动tomcat并进行访问: http://127.0.0.1:8080/solr , 看到如下页面就表示ok了
3. 界面功能介绍
- Analysis:分词
- Document:通过该界面操作,可以对索引库进行添加、删除、修改索引操作
- Query:查询
4. 多SolrCore配置
- 一个Solr工程可以配置多个SolrCore实例
配置多个solrCore实例的优点:
- 一个Solr工程配置多个SolrCore,而且每个SolrCore之间是相互独立的,可以单独对外提供搜索和索引服务。这类似于数据库,一个数据库可以有多个数据库实例,如果有新的需求,可以直接扩展实例
- 多SolrCore在管理索引文件时,可以进行分类管理(比如对商品、订单进行拆分)
- 使用SolrCloud(solr集群)必须要建立多SolrCore
-
复制solrhome下的collection1到本目录下,并且更改名称(比如collection2),然后修改collection2目录下core.properties,将name改成collection2即可,重启solr服务
-
由于collection2是从collection1复制过来,collection1中有内容,此时collection2的内容不为空
5. solr5安装配置
-
Solr5之后不再提供solr.war,但是提供了在server\solr-webapp目录下还是提供webapp这个发布后的项目文件夹
-
位于server/solr目录对应的是solr4的solrhome目录,不过solr5没有再提供collection,需要我们创建一个core(也非常简单,新建一个目录,将configsets\sample-techproducts-configs目录下的conf拷贝到新建的目录下,可以手动添加core.properties这个文件,也可以在控制台添加这个core,名称就是新建目录的名称,完成创建后会自动创建这个core.properties)
-
关于schema.xml文件:solr5不再默认使用schema.xml而是managed-schema,可以很简单的改成schema.xml文件,复制managed-schema重命名为schema.xml(没错,就是直接复制~~~),然后打开Core/conf下的solrconfig.xml文件
<!--
//这个注释掉,
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
-->
<schemaFactory class="ClassicIndexSchemaFactory" /><!-- 添加这个 -->