1.以solr-4.6.0.tgz为例进行学习
2.第一步,看的是 tutorial.html(位于solr-4.6.0/docs目录),默认solr以jetty作为servlet容器
3.但是,如果用流行的tomcat作为servlet容器,该如何设置昵? 带着这个疑问,我在baidu上搜索 tomcat solr,结果很多网页都提到如下类似如下的配置:
solr 安装到 tomcat。修改 E:/apache-tomcat-6.0.18/conf/server.xml,加个 URIEncoding="UTF-8",把 8080 的那一块改为:
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" URIEncoding="UTF-8"/>
我:上述不清楚为何要重定向,难道solr的监听端口默认是8443? 这一步,暂不执行
把下面的内容保存到 E:/apache-tomcat-6.0.18/conf/Catalina/localhost/solr.xml,没有这个目录自行创建。
- <Context docBase="E:/apache-solr-1.3.0/dist/apache-solr-1.3.0.war" reloadable="true" >
- <Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-1.3.0/example/solr" override="true" /> --这是明确webapp的工作环境在哪里
- </Context>
这里提到的solr/home,并且定位到一个目录。于是继续百度,从而看到如下结论:solr/home是solr实例化core核的依据和入口,是必不可少的配置---ok,暂且理解solr/home是其工作的根目录吧(包括索引,搜索,以及相关配置,库文件等等,都在这里面吧)
根据我自己的目录结构,在tomcat/conf/Catalina/localhost目录中创建文件:solr.xml,其内容如下:
<Context path="/solr" docBase="/home/hadoop/solr-4.6.0/dist/solr-4.6.0.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="/home/hadoop/solr-4.6.0/example/solr" override="true" />
</Context>
然后,启动tomcat,并且页面访问:http://localhost:8080/solr 就可以得到solr的管理页面了。
这里有疑问:访问solr,到底访问了哪个文件?另外,solr-4.6.0.war文件被解压缩到哪里了?
或者也可以这样配置(这是网络上推荐的方式):将/home/hadoop/solr-4.6.0/dist/solr-4.6.0.war 拷贝到 /home/hadoop/tomcat/webapps目录,并改名solr.war(改名后就可以被解压缩成solr目录,若保持原样就是solr-4.6.0目录。后者:solr-4.6.0.war这种形式,是不能正常访问的。),并且编写/home/hadoop/tomcat/conf/Catalina/localhost/solr.xml文件内容为:
<Context path="/solr" docBase="/home/hadoop/tomcat/webapps/solr.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="/home/hadoop/solr-4.6.0/example/solr" override="true" />
</Context>
然后,启动tomcat,就可以同样访问了:http://localhost:8080/solr