solr是apache下的一个开源项目,是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML/JSON格式的返回结果。并且提供了一个完善的功能管理界面, 是一款非常优秀的全文搜索引擎。
以前做案例(像crm,erp,等企业项目)的时候都是用的模糊查询,像什么like,limit这类。但是在一些大型门户网站、电商网站,再用这种方法去数据库查,首先人多的时候响应慢数据库压力大,就单这方面就存在问题。而且搜索完整性很差,比如要搜索华为手机,用solr的话那么关于华为、手机、华为手机这三个词在标题或者商品详情或者分类里面都搜索出来。这个时候总不能用sql语句去数据库查吧。
1、windows下安装配置solr
环境:
solr:solr-4.10.3
jdk:jdk1.8.0_45
tomcat:apache-tomcat-8.0.45
第一步:
创建一个文件夹solr(名字任意),将下载解压好的tomcat和solr放到solr文件夹下。
将solr-4.10.3\example\webapps下的solr.war拷贝到apache-tomcat-8.0.45\webapps下并且解压缩,解压之后删除solr.war
记得解压后一定要删除solr.war这个war包,不然启动tomcat的时候会自动解压这个war包那么会覆盖我们解压过的solr文件夹,导致我们之后在solr文件夹里面做的一些操作被覆盖了。
第二步:
将 solr-4.10.3\example\lib\ext下的所有jar包拷贝到apache-tomcat-8.0.45\webapps\solr\WEB-INF\lib下。
第三步:
在solr目录下,创建solrhome(也就是solr的家,里面用来存储solr的相关配置文件,名字任意),将solr-4.10.3\example\solr下所有文件和文件夹拷贝到solrhome下。
解释:solr-4.10.3\example\solr就是一个标准的solrhome,文件夹collection1就是一个solrcore,也就是一个solr的实例,可以理解为一个数据库。当然我们还可以自己来创建其他的solrcore,比如复制一个collection1然后改一下配置。
第四步:
配置好了solrhome还不行,这个时候跟solr的服务器(前面整的tomcat)没任何关系,所以需要告诉tomcat这个solrhome所在的位置。在apache-tomcat-8.0.45\webapps\solr\WEB-INF下修改web.xml,告诉solrhome的位置
到这里就配置完了。然后启动tomcat
启动完之后访问:localhost:8080/solr
如果能看到solr的后台管理界面说明就成功了。
注意:我们用的中文,所以还需要配置中文分析器的,后面打算单独说这个。
2、Linux下安装配置solr
其实会windos下安装配置solr,会linux基本操作的同学完全能够自己在linux环境下安装配置solr。
第一步:
用工具(如ssh)将下载的tomcat跟solr上传到linux并且解压缩(我上传到了usr目录下,注意上传的压缩包要求是linux下的,不要用什么solr-4.10.3.zip这类,一般是xx.tar.gz这种)。创建文件夹solr。将tomcat跟solr-4.10.3拷贝到该文件夹下,这个跟windows下是一样的。
[root@solr usr]# mkdir /usr/local/solr
[root@solr usr]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r(复制目录需要-r)
将solr部署到tomcat并且改名字(改名字只是为了方便,不是必须的)
[root@solr usr]# cd solr-4.10.3/dist
[root@solr dist]# ll
总用量 33856
-rw-r--r--. 1 root root 29741796 12月 10 2014 solr-4.10.3.war
-rw-r--r--. 1 root root 17631 12月 10 2014 solr-analysis-extras-4.10.3.jar
....一堆jar包
[root@solr dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
第二步:
启动tomcat,从而解压缩solr.war。加压缩完之后关闭tomcat,删除solr.war
cd /usr/local/solr
[root@solr solr]# ll
总用量 8
drwxr-xr-x. 4 root root 4096 6月 29 16:39 solrhome
(这个solrhome是后面创建出来的)
drwxr-xr-x. 9 root root 4096 6月 29 16:24 tomcat
[root@solr solr]# cd tomcat
[root@solr tomcat]# bin/startup.sh
[root@solr tomcat]# tail -f logs/catalina.out
…
信息: Server startup in 41004 ms
(说明tomcat起来了)
就表示解压缩完毕了,关掉tomcat
[root@solr tomcat]# bin/shutdown.sh
第三步:
把/usr/solr-4.10.3/example/lib/ext目录下的所有的jar包,添加到solr工程中
[root@solr tomcat]# cd /usr/solr-4.10.3/example/lib/ext
[root@solr ext]# ll
总用量 552
-rw-r--r--. 1 root root 16515 2月 6 2014 jcl-over-slf4j-1.7.6.jar
-rw-r--r--. 1 root root 4959 2月 6 2014 jul-to-slf4j-1.7.6.jar
-rw-r--r--. 1 root root 489884 5月 26 2012 log4j-1.2.17.jar
-rw-r--r--. 1 root root 28688 2月 6 2014 slf4j-api-1.7.6.jar
-rw-r--r--. 1 root root 8869 2月 6 2014 slf4j-log4j12-1.7.6.jar
[root@solr ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib
第四步:
创建一个solrhome。
/example/solr目录就是一个solrhome。复制此目录到/usr/local/solr/solrhome
[root@solr ext]#cd /usr/local/solr
[root@solr solr]#mkdir solrome
[root@solr solr]#cd /usr/solr-4.10.3/example
[root@solr example]# cp -r solr /usr/local/solr/solrhome
[root@solr example]# cd /usr/local/solr
第五步:
关联solr及solrhome。需要修改solr工程的web.xml文件。
指定solrhome位置
[root@solr solr]# vim tomcat/webapps/solr/WEB-INF/web.xml
启动tomcat查看日志
[root@solr bin]# ./startup.sh
[root@solr bin]# cd ..
[root@solr tomcat]# tail -f logs/catalina.out
八月 06, 2017 9:01:13 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory /usr/local/solr/tomcat/webapps/manager
八月 06, 2017 9:01:13 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory /usr/local/solr/tomcat/webapps/examples
八月 06, 2017 9:01:13 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
八月 06, 2017 9:01:13 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
八月 06, 2017 9:01:13 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 22040 ms
启动成功了,访问solr,能看到后台管理页面说明成功了