1、安装虚拟机html
Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,运行标准Solr 服务只须要安装JRE 便可,但若是须要扩展功能或编译源码则须要下载JDK 来完成。能够经过下面的地址下载所需JDK 或JRE :
OpenJDK ( http://java.sun.com/j2se/downloads.html )
Sun (http://java.sun.com/j2se/downloads.html )
IBM (http://www.ibm.com/developerworks/java/jdk/ )
Oracle (http://www.oracle.com/technology/products/jrockit/index.html )
JDK的安装步骤请参考相应的帮助文档。 前端
2、下载Solr java
在下载solr以前,须要先肯定solr的版本, 目前最新版本是 4.10.1,可是在 4.8 之后须要编译在1.7的版本。因此若是是JDK1.6环境,建议使用4.8以前的版本(例如4.7.2)。mysql
官网地址是:http://lucene.apache.org/solr/ linux
归档目录是:http://archive.apache.org/dist/lucene/solr/web
若是咱们要下载最新的solr版本,那么操做以下: sql
1.打开apache官网http://www.apache.org/; 数据库
2.在首页左下侧Projects区域找到并进入Lucene项目; (地址是:http://lucene.apache.org/) apache
3.点击右上侧黄色大按钮,下载solr:windows
4.打开的页面提供一些下载源,咱们使用官方推荐的地址下载:
5.下载solr包;
若是是windows环境能够直接下载zip格式包;若是是在linux环境,下载tgz格式包。
复制地址下载:
[root@note~]# wget http://apache.fayea.com/apache-mirror/lucene/java/4.10.1/lucene-4.10.1.tgz
解压:
[root@note~]# tar -xvzf lucene-4.10.1.tgz
若是咱们须要下载历史版本(例以下载4.7版本),那么须要到归档目录下载。
1.打开solr归档目录地址http://archive.apache.org/dist/lucene/solr/
2.找到4.7.2版本的连接,点击进入。
3.下载须要的solr包:
3、Solr下载包重要目录及文件说明
(Solr下载包重要目录及文件说明,来源于README.txt文件)
contrib:solr功能模块须要的库,根据须要引用
dist:发布目录
dist/solr-4.5.0.war:Solr web服务器,部署到tomcat或其余servlet容器中。
dist/solr--XX.jar:solr结合其余组件的中间包,至少须要包含核心包solr-core-XX.jar
(http://wiki.apache.org/solr/SolrPlugins)
docs:Solr 文档及教程目录
(入口访问docs/index.html)
example:官方提供的Solr使用例子。
example-DIH(Data Import Handler),演示了如何从hsql数据库导入数据到solr中;
example-schemaless,演示了无schema实例;
multicore,演示了如何使用多个core,能够理解每一个core对应一个数据库实体表,如检索公司信息和产品信息,公司core和产品core分别使用本身的配置。固然也能够是不一样数据库中的表,供不一样的项目使用。
solr,演示了单core(这里指collection1)的使用,咱们通常使用时会在这个基础上定制;
solr/collection1/conf目录下主要是两个配置文件:
schema.xml 用于定义索引库的字段、字段类型及分词器等(核心文件)
solrconfig.xml 定义了这个core的配置信息,如使用lucene的版本,log输出,缓存策略等。
3、经过start.jar启动solr
主要用于在本机或测试服务器上搭建一个用于测试的solr。
安装:直接将下载的solr解压到任意目录,例如: D:\solr-4.7.2
启动:若是是window环境,双击D:\solr-4.7.2\example下的start.jar能够启动。可是这种方式solr是在后台执行的 (不会弹出界面,只是在任务管理器能够看到多了一个进程) ,这种方式并不方便调试,没法判断启动中是否有错误。 推荐在命令行中启动,输出的LOG对查错颇有帮助。
D:\solr-4.7.2\example>java -jar start.jar
启动后 D:\solr-4.7.2\example\webapps下的solr.war 会解到D:\solr-4.7.2\example\solr-webapp\webapp中。
start.jar 使用的内置的Jetty服务器,他的入口是StartSolrJetty文件。 启动以后默认端口是8983,若是想使用其余端口能够再启动时候增长参数。
D:solr-4.7.2\example>java -Djetty.port=8080 -jar start.jar
或直接修改jetty的配置文件,D:\solr-4.5.1\example\etc\jetty.xml,将其中8983改为但愿的端口。
若是启动时报异常:
FAILED SocketConnector@0.0.0.0:8983: java.net.BindException: Address already in use: JVM_Bind 就说明当前端口占用中。须要换一个端口。
org.apache.solr.common.SolrException: Index locked for write for core collection1 或 org.apache.lucene.store.LockObtainFailedException: Index locked for write for core collection1 有多是索引库已经被一个solr占用了,不能两个端口同时启动同一个core。
若是没有报错启动成功后就能够在浏览器中输入地址: http://localhost:8983/solr/ 就能够看到solr的服务主页了。
3、Tomcat上安装Solr
假设是Linux服务器。
1.打开tomcat目录下的conf/server.xml,设置tomcat编码,防止从solr中查询时,参数为中文因乱码而查不出结果;
[root@note ~]# vi /opt/tomcat/conf/server.xml
在8080端口对应的Connector中加入URIEncoding="UTF-8",以下图(必定注意大小写):
2.在tomcat中部署solr服务器
这和在Tomcat中部署其余项目同样。 最简单的方法是直接将solr.war考到tomcat下,同时改名为solr.war
[root@note ~]# cp solr-4.7.2/dist/solr.war /opt/tomcat/webapps/solr.war
若是对Tomcat比较熟悉,也能够将solr.war解压到任意目录,而后经过Tomcat Context配置的方式进行部署。
简单介绍一下,经过Context配置有两种经常使用方式。 一种是在tomcat/conf/server.xml,在<host></host>之间加入代码:
<Context path="solr" docBase="tomcatApp/MySolrApp" debug="0" reloadable="true" crossContext="true"/>
(path是应用的上下文跟,docBase是应用所在目录)
另外一种是在tomcat/conf/Catalina/localhost目录增长一个XML文件,好比是MyProject,内容为:
<?xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="tomcatApp/MyProject" path="" reloadable="true"> </Context>
(XML的文件名就是应用的上下文跟)
3.整合索引库
solr应用有两个solr文件,一个是example/webapps/solr.war,这个文件是Solr的应用服务。(能够理解成就是一个JAVA-WEB应用),另一个是solr-4.7.2/example/solr,这个是solr-core 目录(索引库目录),这个目录用来放置索引库。
每一个索引库都包含一个config目录,这个目录是索库的配置。
Solr服务默认会到JAVA运行上下文目录(tomcat/bin)中查找这个索引仓库目录。
咱们能够将solr-4.7.2\example下的solr拷贝至tomcat的bin目录下(tomcat/bin/solr)。这样当Solr服务启动的时候就会自动加载相关的配置。 可是这种方法并不推荐,由于solr创建的索引文件也会放到索引库中(索引库data目录)索引库中会包含了索引文件,索引文件占用的空间会愈来愈多,因此建议将solr索引库单独存放。
这个目录能够经过该Solr服务的web.xml进行配置,打开web.xml
[root@note ~]# vi /opt/tomcat/webapps/solr/WEB-INF/web.xml
能够看到其中有这样一段配置
<!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/put/your/solr/home/here</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->
将env-entry节点的注释去掉,修改env-entry-value值
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/opt/my_solr_core</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
/opt/my_solr_core是solr-core的目录 (记得将solr-core文件家的内容拷贝到my_solr_core)
4.为Solr服务添加必要的jar包
solr的war包中不包含任何日志的jar包,因此须要本身手动添加; 打开solr.war\WEB-INF\lib目录,添加如下jar包
jcl-over-slf4j-1.6.6.jar
jul-to-slf4j-1.6.6.jar
log4j-1.2.16.jar
slf4j-api-1.6.6.jar
lf4j-log4j12-1.6.6.jar
(这些是日志包,在solr-4.10.1\example\lib\ext目录下)
[root@note ~]# cp solr-4.7.2/example/lib/ext/* /opt/tomcat/webapps/solr/WEB-INF/lib/
log4j须要一个log4j.properties配置文件,在solr-4.7.2/example/resources/目录有一个演示用的log4j.properties配置文件中。
咱们能够将这个配置文件拷贝到应用中,后续再根据须要修改;
[root@note ~]# mkdir /opt/tomcat/webapps/solr/WEB-INF/classes/ [root@note ~]# cp solr-4.7.2/example/resources/log4j.properties /opt/tomcat/webapps/solr/WEB-INF/classes/
须要注意的是log4j.properties配置文件有一段配置:
log4j.appender.file.File=${solr.log}/solr.log
solr.log为tomcat启动时指定的变量,若是没指定,日志文件可能会写到其余目录下。建议改为绝对路径,这样更方便一些。
若是不想输出文件日志,那么能够将 log4j.rootLogger=INFO, file, CONSOLE 改成 log4j.rootLogger=INFO, CONSOLE
(对于log4j相关的配置,能够查阅log4j相关文档,这里不作具体的介绍)
若是须要DIH服务,还须要添加DIH相关的包和jdbc相关包。
solr-dataimporthandler-4.10.1.jar
solr-dataimporthandler-extras-4.10.1.jar
(这两个包在 solr-4.10.1\dist目录)
mysql-connector-java-5.1.22.jar
(mysql数据库的驱动包,若是是其余数据库,须要添加对应的jdbc 包)
重启tomcat,访问地址http://你的服务器ip或域名/solr/ 若是能够看到以下界面,证实配置成功了!
注:部署以后须要确认索引库中的路径路径配置属否正确。 solr-4.7.2/example/solr/collection1/conf/solrconfig.xml
这些路径须要修改,不然可能报找不到某些类的异常,如: Can’t find (or read) directory to add to classloader 或者 java.lang.ClassNotFoundException: solr.clustering.ClusteringComponent
这个路径若是是相对路径,那么是相对于索引库的路径 (collection1的路径)
4、Solr web服务器管理界面说明
Solr web应用自带了管理界面,能够方便的查看系统状态,solr设置,分词检验,索引查询,增减核心(core)。
这里列举一些经常使用的比较重要的内容。
Dashboard(仪表盘) 访问主页,http://你的域名或ip/solr/,默认显示此页内容,包含solr版本,包含系统内存和jvm内存的使用状况,jvm参数等
Logging(日志) 能够用来查看solr运行是否有警告或者异常,以便及时处理
Core Admin(索引库管理) 这个界面很重要,这使多核的配置,索引库的优化等,变得很是简单; 主要功能包括:Add Core(添加核心,即索引库),Unload(卸载核心),Rename(重命名核心),Optimize(优化索引库)。
Java Properties(java属性) java及tomcat的一些属性
Core Selector(核心选择器,这里以collection1为例)
1.Overview(概览):包含基本统计如当前文档数;和实例信息如当前核心的配置目录;
2. Analysis(分析):检验分词效果,如图,分词后“开发”将被高亮(注意FieldType须要选定为与被分析内容类型一致,如这里的title配置了中文分词)
3.Config(配置):当前核心的配置,即solrconfig.xml的内容
4.Query(查询):这是一个查询界面,用的比较多,用来查询索引的文档,包含是否存在,排序是否正确等。 5.Schema(当前索引库定义),即即schema.xml的内容
5、安全问题
Solr管理后台功能十分强大,可是并无集成安全认证机制,若是在生产环境,管理后台地址能够公开访问的话,不但core的结构会暴漏出来,索引库甚至能够被修改或删除。 由于此界面涉及到位solr增减核心等管理操做,在实际产品上运行时,尽可能设置禁用在公网上(经过ip或者域名)的访问,须要使用时再临时打开。