什么是solr
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr 4还增加了NoSQL支持。
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
solr的安装及其配置
环境准备
solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tocmat作为Servlet容器,环境如下:
- Solr:Solr4.10.3
- Jdk:jdk1.7.0_72
- Tomcat:apache-tomcat-7.0.53
Jdk和Tomcat的安装就不详细介绍了,只需要下载好对应的包解压到指定目录,再配置好环境变量就OK。
运行java -version,输出如下即安装成功。
Tomcat通过startup.sh启动运行:
浏览器访问到如下页面即安装成功:
安装solr
将solr包上传到服务器,解压。我这里的安装路径是/usr/local/solr
,将文件上传到这个路径下并解压:
[root@iZwz9c6u1iybgf3f7s8cg6Z solr]# tar -zxvf solr-4.10.3.tgz.tgz
解压之后得到一个solr-4.10.3文件夹,里面内容如下:
bin:solr的运行脚本
contrib:solr的一些贡献软件/插件,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档
example:solr工程的例子目录:
- example/solr:该目录是一个包含了默认配置信息的Solr的Core目录。
- example/multicore:该目录包含了在Solr的multicore中设置的多个Core目录。
- example/webapps:该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息
solr整合tomcat
1.将dist\solr-4.10.3.war拷贝到Tomcat的webapp目录下改名为solr.war。这里的Tomcat目录理论上可以是任何位置,但是我为了方便管理起见,把Tomcat也放到了solr目录下面。
[root@iZwz9c6u1iybgf3f7s8cg6Z dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
这是webapps下就有了solr.war这个war包。
2.启动tomcat后,solr.war自动解压,出现solr文件夹,然后将原来的solr.war删除,不然下次启动又会解压覆盖你的solr文件夹,删除solr.war时一定要把Tomcat关掉,不然会连带着把刚刚解压出来的solr文件夹也删掉。
[root@iZwz9c6u1iybgf3f7s8cg6Z webapps]# rm -f solr.war
3.拷贝example\lib\ext 目录下所有jar包到Tomcat的webapp\solr\WEB-INF\lib目录下
root@iZwz9c6u1iybgf3f7s8cg6Z ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
4.拷贝log4j.properties文件
在 Tomcat下webapps\solr\WEB-INF目录中创建文件 classes文件夹,
复制Solr目录下example\resources\log4j.properties至Tomcat下webapps\solr\WEB-INF\classes目录
[root@iZwz9c6u1iybgf3f7s8cg6Z solr]# cd solr-4.10.3
[root@iZwz9c6u1iybgf3f7s8cg6Z solr-4.10.3]# cd example/resources/
[root@iZwz9c6u1iybgf3f7s8cg6Z resources]# ll
total 4
-rw-r--r--. 1 root root 846 Dec 1 2014 log4j.properties
[root@iZwz9c6u1iybgf3f7s8cg6Z resources]# cp log4j.properties /usr/local/solr/tomcat/webapps/solr
/WEB-INF/classes/
5.创建solrhome及配置solrcore的solrconfig.xml文件,理论上solrhome也可以在任何位置,这里我放在了solr下。
然后把/solr-4.10.3/example下面的solr文件夹复制到刚刚建立的solrhome下面。
[root@iZwz9c6u1iybgf3f7s8cg6Z example]# cp -r solr /usr/local/solr/solrhome/
6.设置solrhome配置,是要通过JNDI告诉Tomcat连接池利用的是什么。修改Tomcat目录 下webapp\solr\WEB-INF\web.xml文件,如下所示:
测试
启动Tomcat,在浏览器访问http://47.107.71.209:8080/solr
出现如下页面则说明搭建成功:
总结
这个安装也较为简单,没有复杂的配置,但是在Tomcat的Catalina_home配置要小心,出现这种情况一般是在直接移动安装好的Tomcat文件夹。Tomcat所对应的Catalina_home都必须是自身的安装路径,如果指向其他的Tomcat的路径,则会出现在TomcatA目录启动Tomcat服务,但是启动的是TomcatB的情况。