centos 6.8 搭建solr服务器(附solr教程、安装jdk和Tomcat教程)

centos 6.8 搭建solr服务器(附安装jdk和Tomcat教程)

solr 搜索服务器运行 在Java开发环境中,所以前置环境需要有linux+jdk+Tomcat,linux的话就不多讲了,买个服务器安装镜像是最快的选择。

一、安装jdk1.8

尽量别搞什么传tgz到服务器的操作了,带宽通常不行。当然觉得速度快也可以吧, 我这只讲yum安装。

1.查看yum库中有那些jdk版本

[root@VM-0-13-centos ~]# yum search java|grep jdk
Repository epel is listed more than once in the configuration
ldapjdk-javadoc.x86_64 : Javadoc for ldapjdk
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment with
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK API Documentation for packages
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle for packages with
ldapjdk.x86_64 : The Mozilla LDAP Java SDK
rh-java-common-slf4j-jdk14.noarch : jdk14 module for slf4j

2.选择版本,进行安装

[root@VM-0-13-centos ~]# yum install java-1.8.0-openjdk

在这里插入图片描述

3.设置环境变量

[root@VM-0-13-centos ~]# vim /etc/profile

添加如下内容:

#set java environment
JAVA_HOME= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-0.b15.el6_8.x86_64/
JRE_HOME= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-0.b15.el6_8.x86_64//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@VM-0-13-centos ~]# source /etc/profile

4.验证可用性

[root@VM-0-13-centos ~]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

到此安装jdk结束,踩雷了请自行百度加油。

二、安装Tomcat

通过命令yum search tomcat发现centos 6.8系统下Tomcat只有6版本,不满足目前开发的需要,所以只能慢速传tgz了。上官网http://tomcat.apache.org/download-80.cgi下载你们自己所需要的版本进行上传,我是传到/usr/local/下。

1.rz上传

在这里插入图片描述

2.解压&安装

1)解压
[root@VM-0-13-centos local]# tar -zxvf apache-tomcat-7.0.47.tar.gz
2)删除压缩包
[root@VM-0-13-centos local]# rm -rf apache-tomcat-7.0.47.tar.gz 

3.启动Tomcat

[root@VM-0-13-centos local]# /usr/local/apache-tomcat-7.0.47/bin/startup.sh

在这里插入图片描述
电脑浏览器访问服务器8080端口测试,看到以下界面即成功。
在这里插入图片描述

如果访问失败,大概思路就是防火墙的端口是否开放。到此Tomcat安装完成,前置环境完成。

其实有个更方便的做法,就是宝塔安装Tomcat。有兴趣的朋友们直接去试试就好,也比较无脑。

三、安装solr单机版

集群版偏麻烦,后面单独写一篇博客。

1.创建solr文件夹(方便管理)

[root@VM-0-13-centos local]# mkdir /usr/local/solr

2.上传solr压缩包并解压

上传:

[root@VM-0-13-centos solr]# rz

在这里插入图片描述

解压:

[root@VM-0-13-centos solr]# tar -zxvf solr-4.10.3.tgz.tgz 

在这里插入图片描述

3.把 /root/solr-4.10.3/dist/solr-4.10.3.war 包部署到tomcat下。并改名为 solr.war

也可以不改名,纯属为了未来偷懒而已。

[root@VM-0-13-centos dist]# cp solr-4.10.3.war /usr/local/apache-tomcat-7.0.47/webapps/solr.war

4.启动Tomcat对war包进行解压

1)启动Tomcat
[root@VM-0-13-centos dist]# cd /usr/local/apache-tomcat-7.0.47/bin/
[root@VM-0-13-centos bin]# ./startup.sh
2)关闭Tomcat
[root@VM-0-13-centos bin]# ./shutdown.sh

在这里插入图片描述

3)删除war包

确定已完成解压,切记关闭Tomcat后再删除war包,否则会被一起删除。

[root@VM-0-13-centos webapps]# rm -f solr.war 

在这里插入图片描述

5.把/usr/local/solr/solr-4.10.3/example/lib/ext 目录下所有的jar包复制到solr工程中

这个文件夹中的jar都是关于日志的。

[root@VM-0-13-centos ext]# cd /usr/local/solr/solr-4.10.3/example/lib/ext/
[root@VM-0-13-centos ext]# cp * /usr/local/apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/

6.把/usr/local/solr/solr-4.10.3/example/solr复制到任意文件夹中。

/usr/local/solr/solr-4.10.3/example/solr = solrhome ,用来存放solr的配置文件。

[root@VM-0-13-centos ext]# cp -r /usr/local/solr/solr-4.10.3/example/solr /usr/local/solr/solrhome

7.告诉solr服务器solrhome的位置。

需要修改solr工程的web.xml文件。

[root@VM-0-13-centos solr]# vim /usr/local/apache-tomcat-7.0.47/webapps/solr/WEB-INF/web.xml

在这里插入图片描述

取消注释,修改路径。

在这里插入图片描述

8.启动Tomcat准备测试solr

[root@VM-0-13-centos solr]# /usr/local/apache-tomcat-7.0.47/bin/startup.sh 

9.访问solr服务器

电脑浏览器输入:ip地址:端口号/solr
在这里插入图片描述

看到这个页面就是solr服务器搭建完成。

四、配置中文解析器

在solr中默认是没有中文分析器的,需要手工配置。配置一个FieldType,在FieldType中指定中文分析器。

1.使用IK-Analyzer。把分析器的文件夹上传到服务器

rz xxx.tgz就可以了,然后直接tar -zxvf xxx.tgz解压出来,我是放在solr文件夹下了。

2.把分析器的jar包添加到solr工程中。

[root@VM-0-13-centos IK_Analyzer_2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/

3.把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath

classpath = /usr/local/apache-tomcat-7.0.47/webapps/solr/WEB-INF/classes

没有此文件夹的自己新建。
接下来拷贝三个文件到classes文件夹中。

[root@VM-0-13-centos IK_Analyzer_2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/apache-tomcat-7.0.47/webapps/solr/WEB-INF/classes/

注意:扩展词典及停用词词典的字符集必须是utf-8。不能使用windows记事本编辑。

五、配置fieldType

进入solrhome配置文件:

[root@VM-0-13-centos IK_Analyzer_2012FF_hf1]# vim /usr/local/solr/solrhome/collection1/conf/schema.xml 

调到文档末尾加入以下配置:

<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

技巧:使用vi、vim跳转到文档开头gg。跳转到文档末尾:G

六、配置业务字段

Solr中的字段必须是先定义后使用。
业务字段判断标准:

  1. 在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述。
  2. 后续的业务是否需要用到此字段。例如:商品id。

此处配置并不统一,所以也没有统一的配置文件,我贴上来我自己的配置让大家看看,大家依葫芦画瓢就没太大问题了。

<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_desc" type="text_ik" indexed="true" stored="false" />

<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"/>
<copyField source="item_desc" dest="item_keywords"/>

稍作解释:
field:

  1. name:字段名
  2. type:字段类型
  3. indexed:是否创建索引
  4. stored:是否存储

copyField(拷贝域item_keywords):

  1. source:字段名
  2. dest:所属域

copyField是solr对搜索引擎做的优化,将其他域中的字段拷贝到一个域中进行检索,可以提高效果。可以类似的拿多表查询转换成单表查询来对比。

七、重启Tomcat

[root@VM-0-13-centos IK_Analyzer_2012FF_hf1]# /usr/local/apache-tomcat-7.0.47/bin/shutdown.sh 
[root@VM-0-13-centos IK_Analyzer_2012FF_hf1]# /usr/local/apache-tomcat-7.0.47/bin/startup.sh 

在这里插入图片描述

可以看见已经能正确查看新增的业务字段了。

八、测试中文分析器是否正常运作

在这里插入图片描述

确定正常,到此solr搜索服务器,也就是搜索引擎配置完毕。

九、维护索引库(基础增删改查操作)

添加:添加一个json格式的文件就可以。
修改:在solr中没有update,只需要添加一个新的文档,要求文档id和被修改文档的id一致。原理是先删除后添加。
删除:使用xml格式。

添加:
在这里插入图片描述
在这里插入图片描述

删除两种方法:
1、根据id删除:

<delete>
<id>test001</id>
</delete>
<commit/>

在这里插入图片描述

2、根据select删除(下面代码是删除所有,慎用):

<delete>
<query>*:*</query>
</delete>
<commit/>

在这里插入图片描述

十、导入数据库方法

由于我做的是集群版的solr,此处配置插件非常麻烦,所以没有这一步。直接用java代码在solr服务器创建文档进行操作。

maven工程导入solrJ客户端。
在这里插入图片描述
java测试。

package com.taozi.rest.solrj;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrJTest {

	String baseURL = "http://IP:8080/solr";
	/**
	 * 添加 && 修改
	 * @return void       
	*/ 
	@Test
	public void addDocument() throws Exception {
		//创建一连接
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//创建一个文档对象
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "test001");
		document.addField("item_title", "测试商品1");
		document.addField("item_price", 54321);
		//把文档对象写入索引库
		solrServer.add(document);
		//提交
		solrServer.commit();
	}
	
	/**
	 * 删除 
	 * @return void 
	*/ 
	@Test
	public void deleteDocument() throws Exception {
		//创建一连接
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//solrServer.deleteById("test001");
		solrServer.deleteByQuery("*:*");
		solrServer.commit();
	}
	
	/**
	 * 查询 
	 * @return void       
	*/ 
	@Test
	public void queryDocument() throws Exception {
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//创建一个查询对象
		SolrQuery query = new SolrQuery();
		//设置查询条件
		query.setQuery("*:*");
		query.setStart(20);
		query.setRows(50);
		//执行查询
		QueryResponse response = solrServer.query(query);
		//取查询结果
		SolrDocumentList solrDocumentList = response.getResults();
		System.out.println("共查询到记录:" + solrDocumentList.getNumFound());
		for (SolrDocument solrDocument : solrDocumentList) {
			System.out.println(solrDocument.get("id"));
			System.out.println(solrDocument.get("item_title"));
			System.out.println(solrDocument.get("item_price"));
			System.out.println(solrDocument.get("item_image"));
			
		}
	}
}

原创不易,盗版冷静。

有其他交流的想法,可以加我创建的Q群:820080257

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值