一、solr环境安装
[root@localhost IK_Data]# ls
apache-tomcat-7.0.47.tar.gz IKAnalyzer.cfg.xml mydict.dic zookeeper-3.4.6.tar.gz
ext_stopword.dic jdk-7u55-linux-i586.tar.gz NOTICE.txt
IKAnalyzer2012FF_u1.jar LICENSE.txt solr-4.10.3.tgz.tgz
1、jdk安装
1.1、jdk下载
[root@bogon local]# yum install java-1.7.0-openjdk
1.2、配置环境变量
[root@bogon local]# vim /etc/profile
- 在配置文件中添加设置
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181-2.6.14.8.el7_5.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
- 重新加载配置文件
[root@bogon local]# source /etc/profile
2、tomcat安装
2.1、下载tomcat,并解压
[root@bogon local]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.52/bin/apache-tomcat-8.0.52.tar.gz
[root@bogon local]# ls
apache-tomcat-8.0.52.tar.gz games lib sbin
bin include lib64 share src
etc java libexec wget-log
[root@bogon local]# tar zxf apache-tomcat-8.0.52.tar.gz
https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
3、solr安装
3.1、将solr中的war包复制到tomcat中:
solr文件路径:/usr/local/solr/solr-4.10.3/dist
[root@localhost dist]# pwd
/usr/local/solr/solr-4.10.3/dist
[root@localhost dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
3.2、启动tomcat解压war包:
[root@localhost dist]# cd /usr/local/solr/tomcat/bin/
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181-2.6.14.8.el7_5.x86_64/jre
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
3.3、删除war包
[root@localhost webapps]# ls
docs examples host-manager manager ROOT solr solr.war
[root@localhost webapps]# pwd
/usr/local/solr/tomcat/webapps
[root@localhost webapps]# rm -rf solr.war
[root@localhost webapps]# ls
docs examples host-manager manager ROOT solr
3.4、将example中的lib库复制到tomcat中
[root@localhost ext]# ls
jcl-over-slf4j-1.7.6.jar log4j-1.2.17.jar slf4j-log4j12-1.7.6.jar
jul-to-slf4j-1.7.6.jar slf4j-api-1.7.6.jar
[root@localhost ext]# pwd
/usr/local/solr/solr-4.10.3/example/lib/ext
[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
[root@localhost ext]#
3.5、创建solrhome
[root@localhost example]# pwd
/usr/local/solr/solr-4.10.3/example
[root@localhost example]# cp -r solr /usr/local/solr/solrhome
3.6、关联solrhome与tomcat
- 修改web.xml
[root@localhost WEB-INF]# pwd
/usr/local/solr/tomcat/webapps/solr/WEB-INF
[root@localhost WEB-INF]# vim web.xml
3.7、启动tomcat:
[root@localhost /]# cd /usr/local/solr/tomcat/bin/
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181-2.6.14.8.el7_5.x86_64/jre
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
3.8、打开防火墙:
[root@localhost bin]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
[root@localhost bin]# firewall-cmd --reload
success
[root@localhost bin]#
3.9、测试:访问地址:
http://192.168.58.247:8080/solr/#/
三、给solr配置中文分析器
1、将jar包复制到tomcat对应的solr的lib文件夹下面:
- 文件夹地址:solr/tomcat/webapps/solr/WEB-INF/lib/
[root@localhost IK_Data]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
2、复制配置文件到classes文件夹下
[root@localhost IK_Data]# mkdir /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
[root@localhost IK Analyzer 2012FF_hf1]# cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/
3、修改managed-schema 配置文件
- 地址:/usr/local/solr/solrhome/configsets/_default/conf/schema.xml
[root@localhost IK_Data]# cd /usr/local/solr/solrhome/collection1/conf/
[root@localhost conf]# vim schema.xml
- 添加内容
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
4、添加需要关联的数据库字段
- 地址:/usr/local/solr/solrhome/configsets/_default/conf/schema.xml
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
5、重启服务器:
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181-2.6.14.8.el7_5.x86_64/jre
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# pwd
/usr/local/solr/tomcat/bin
6、访问地址:
http://192.168.58.247:8080/solr/#/
五、测试使用solr
- 采用maven方式创建项目
1、导入jar包:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>5.5.3</version>
</dependency>
2、java测试代码
@Test
public void addData() throws Exception{
HttpSolrServer solrServer = new HttpSolrServer("http://192.168.58.247:8080/solr/");
SolrInputDocument document = new SolrInputDocument();
document.addField("id","solrtest01");
document.addField("item_title","测试数据——title");
document.addField("item_sell_point","测试数据--sell-point");
solrServer.add(document);
solrServer.commit();
}
@Test
public void queryData() throws Exception{
HttpSolrServer solrServer = new HttpSolrServer("http://192.168.58.247:8080/solr/");
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
QueryResponse response = solrServer.query(query);
SolrDocumentList list = response.getResults();
for (SolrDocument document: list ) {
System.out.println(document.get("id"));
System.out.println(document.get("item_title"));
System.out.println(document.get("item_sell_point"));
}
}