搜索系统搭建
搜索功能需要发布服务共pc端、移动端使用。根据关键词搜索,得到json格式的搜索结果。
创建一个搜索系统,发布搜索服务。
Solr服务的搭建
第一步:安装jdk、安装tomcat,复制一份tomcat到/usr/local/solr/目录下
cp -r apache-tomcat-7.0.47 /usr/local/solr
mv apache-tomcat-7.0.47 tomcat
第二步:解压solr压缩包。
tar -zxf solr-4.10.3.tgz.tgz
mv solr-4.10.3 /usr/local
第三步:把dist/solr-4.10.3.war部署到tomcat
第四步:解压缩war包。启动tomcat解压。
第五步:需要把/usr/local/solr-4.10.3/example/lib/ext目录下的所有的jar包添加到solr工程中。
第六步:创建solrhome。先在/usr/local下创建一个solr目录,
cd /usr/local -> mkdir solr
然后把/usr/local/solr-4.10.3/example/solr文件夹复制一份作为solrhome。
cp -r /usr/local/solr-4.10.3/example/solr /usr/local/solr/home
第七步:告诉solr服务solrhome的位置。需要修改web.xml
修改/usr/local/solr/tomcat/webapps/solr/WEB-INF/web.xml中的:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
solr集群
第一步,安装4个tomcat到solr-cloud目录下,修改端口号分别为9001,9002,9003,9004
第二步,将solr分别部署到4个tomcat下,把单机版的solr复制到solr-cloud的tomcat/webapps下就可以了。
第三步,为每一个solr实例创建一个solrhome,修改
/usr/local/solr-cloud/tomcat01/webapps/solr/WEB-INF/下的web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome01</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
第四步,修改每个/usr/local/solr-cloud/solrhome下的solr.xml
32,33行分别为主机地址和端口号
<str name="host">${host:115.159.93.201}</str>
<int name="hostPort">${jetty.port:9001}</int>
第五步,把配置文件上传到zookeeper,由zookeeper来统一管理solr集群的配置信息。
进入命令所在的目录
cd /usr/local/solr-4.10.3/example/scripts/cloud-scripts/
把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper
./zkcli.sh -zkhost 115.159.93.201:2182, 115.159.93.201:2181, 115.159.93.201:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
进入一个zookeeper下的bin
使用zkCli.sh查看是否上传成功
第六步,告诉solr实例zookeeper的位置,需要向tomcat的catalina.sh里添加:
JAVA_OPTS="-DzkHost=115.159.93.201:2181,115.159.93.201:2182,115.159.93.201:2183"
第七步,启动4个tomcat
第八步,将4个solr分成2片,每片一个主节点,一个从节点。
http://115.159.93.201:9001/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
第九步,删除不需要的collection1
http://115.159.93.201:9001/solr/admin/collections?action=DELETE&name=collection1
将单机版solr切换到集群版
在applicationContext-service.xml中修改配置:
<!-- 配置单机版solr客户端 -->
<!-- <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg name="baseURL" value="http://115.159.93.201:8080/solr"></constructor-arg>
</bean>
-->
<!-- 配置集群版solr客户端 -->
<bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="115.159.93.201:2181,115.159.93.201:2182,115.159.93.201:2183"></constructor-arg>
<property name="defaultCollection" value="collection2"></property>
</bean>