Solr的安装与配置

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


 

搜索引擎:Elasticsearch、Solr、Lucene

 


Solr的安装与配置(linux版本) 

1.Centos安装jdk:
	1.在/usr/local目录下创建java文件夹:cd /usr/local	
					    mkdir java
	2.把64位的JDK(jdk-7u75-linux-x64.tar.gz)解压到 /usr/local/java目录下
	  指定解压到/usr/local/java目录下的命令:tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/local/java
	
	3.可以查看JDK版本号:注意如果是linux位数和JDK位数不一致的话,是无法执行java的命令的。
		(1)cd /usr/local/java/jdk1.7.0_75/bin/
		(2)./java -version
 		(3)在profile配置文件中配置好新的JDK之后,便可以直接使用“java -version”查看JDK版本号

	4.查看CentOS已安装的自带openjdk,并卸载CentOS自带的该openjdk:
		(1)查看CentOS已安装的所有软件库:rpm -qa 
		(2)查看CentOS已安装的自带openjdk:rpm -qa | grep java
		     查看出CentOS已安装的自带的两个openjdk:
				java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
				java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
		(3)卸载上述两个CentOS已安装的自带的两个openjdk:
			rpm -e java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
			rpm -e java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64	  
 		(4)检查是否卸载成功:rpm -qa | grep java

	5.配置/etc目录下的profile配置文件:
		(1)选中/etc/profile文件,右键open with default text editor

		(2)在文件末尾添加以下内容:
    			#set java environment
			JAVA_HOME=/usr/local/java/jdk1.7.0_75
    			CLASSPATH=.:$JAVA_HOME/lib/tools.jar
    			PATH=$JAVA_HOME/bin:$PATH
   			export JAVA_HOME CLASSPATH PATH

		(3)重新加载profile配置文件,让配置文件生效:source /etc/profile     
		(4)检查是否已配置好新的JDK:java -version	
 

2.Centos安装tomcat:
	1.在/usr/local目录下创建tomcat文件夹
	2.把tomcat(apache-tomcat-7.0.57.tar.gz)解压到 /usr/local/tomcat目录文件夹下
	  指定解压到/usr/local/tomcat目录下的命令:tar zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local/tomcat
	3.修改Tomcat的配置文件,解决GET请求提交的表单数据的乱码问题:(Tomcat7中没有配置好,Tomcat8中已配置好)
	  修改server.xml配置文件中的编码格式(这种方式只支持get方式的请求);
 	  在server.xml文件中的修改端口的元素<Connector>中增加URIEncoding=“UTF-8”;
	  设置编码/解码时都要使用该指定的字符编码;
通过配置URIEncoding=“UTF-8”,便可以实现支持GET请求的URL中识别中文字符,
那么如果通过URL(IP:端口/中文文件名的文件)GET请求 下载中文文件名的文件的话,
那么tomcat才能支持GET请求URL中识别中文字符并准确下载文件

	4.进入到tomcat的bin目录下:cd /usr/local/tomcat/apache-tomcat-7.0.57/bin/
 	5.开启服务器:./startup.sh
	6.并且将8080端口添加到防火墙,直接执行下面两行:
    		/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT  
   		/etc/rc.d/init.d/iptables save


3.Centos安装solr:
	1.解压solr:tar zxvf solr-4.10.3.tgz.tgz
	2.把解压后的Solr目录下的dist文件夹中的“solr-版本号.war”拷贝到 Tomcat目录下的 webapps文件夹中:
		cp solr-4.10.3/dist/solr-4.10.3.war apache-tomcat-7.0.52/webapps/
	3.去到Tomcat的bin目录下:cd /root/apache-tomcat-7.0.52/bin
	4.启动Tomcat之后,便会自动解压webapps目录下的war包:./startup.sh
	5.关闭Tomcat:./shutdown.sh
	6.把解压后的Solr目录下example/lib/ext文件夹下的所有的jar包 拷贝到 Tomcat目录下的 webapps/solr项目/WEB-INF/lib目录下:
		cd /root/solr-4.10.3/example/lib/ext
		cp -r ./ /root/apache-tomcat-7.0.52/webapps/solr-4.10.3/WEB-INF/lib
	7.把/solr-4.10.3/example下的solr文件夹 拷贝到 /root路径下,并把solr文件夹改名为solrhome
		cp -r /root/solr-4.10.3/example/solr /root
	 	mv solr solrhome
	8.去到该目录下修改web.xml,添加solrhome的绝对路径:
		cd /root/apache-tomcat-7.0.52/webapps/solr-4.10.3/WEB-INF

	9.去到Tomcat的bin目录下启动Tomcat:
		cd /root/apache-tomcat-7.0.52/bin
		./startup.sh

	10.访问solr:
		http://192.168.25.133:8080/solr项目名
		比如:http://192.168.25.133:8080/solr-4.10.3

	11.如果Tomcat出问题了的话,无法启动或无法访问项目的话,注意查看Toncat的日志文件catalina.out:
		cd /root/apache-tomcat-7.0.52/logs
		cat catalina.out

Solr的安装与配置(window版本)

1.安装 Tomcat,解压缩即可
2.解压solr

3.把解压后的Solr目录下的dist文件夹中的“solr-版本号.war”拷贝到 Tomcat目录下的 webapps文件夹中

4.启动Tomcat:执行startup.bat,即会自动解压webapps文件夹中的war包,
	      此处便会把“solr-版本号.war”进行自动解压。

5.把解压后的Solr目录下example/lib/ext文件夹下的所有的jar包 拷贝到 Tomcat目录下的 webapps/solr项目/WEB-INF/lib目录下

6.把解压后的Solr目录下example文件夹下中的solr 拷贝到 比如D盘的根目录下,并solr文件夹名修改名字为solrhome,该solrhome用于保存多个数据库

7.Tomcat目录下的 webapps/solr项目/WEB-INF目录中的web.xml中进行配置solrhome的绝对路径


不使用 中文分析器IKAnalyzer 时 对中文进行分词结果:缺点是每个中文字符都被作为单个分词


使用 中文分析器IKAnalyzer 对中文进行分词(linux版本)

1.把 IKAnalyzer2012FF_u1.jar 拷贝到 /root/apache-tomcat-7.0.52/webapps/solr-4.10.3/WEB-INF/lib 目录下 
2.在WEB-INF目录下 创建classes文件夹,把 ext_stopword.dic、IKAnalyzer.cfg.xml、mydict.dic 拷贝到 
  /root/apache-tomcat-7.0.52/webapps/solr-4.10.3/WEB-INF/classes 目录下 
	1./WEB-INF/classes:实际就是 classpath目录
	2.ext_stopword.dic:停用词词典
	3.mydict.dic:拓展词典
	4.IKAnalyzer.cfg.xml:可配置 停用词词典ext_stopword.dic 和 拓展词典mydict.dic 
3.在/root/solrhome/collection1/conf/ 目录下的 schema.xml:配置一个 FieldType,使用 中文分析器IKAnalyzer
	1.collection1:solrhome目录下的 其中一个数据库
	2.配置一个 FieldType,使用 中文分析器IKAnalyzer:
             <fieldType name="text_ik" class="solr.TextField">
                   <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
             </fieldType>
4.重启Tomcat后再访问192.168.25.133:8080/solr-4.10.3

因为设置了字段类型“text_ik”使用上了中文分析器IK对中文进行分词,
所以此处指定“所要进行分词的内容”对应存储在“text_ik”字段中,
即可根据中文分析器IK对中文进行分词。

使用 中文分析器IKAnalyzer 对中文进行分词(window版本)

因为设置了字段类型“text_ik”使用上了中文分析器IK对中文进行分词,
所以此处指定“所要进行分词的内容”对应存储在“text_ik”字段中,
即可根据中文分析器IK对中文进行分词。

配置域:自定义域、复制域、动态域

1.域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的Field(域)。
  一般来说,每一种域对应着一种数据,用户对同一种数据进行相同的操作。
2.域的常用属性:
	name:指定域的名称(字段的名称)
	type:指定域的类型(字段的类型)
	indexed:是否建立索引进行搜索
	stored:是否进行存储
	required:是否必须
	multiValued:是否多值

 自定义域(自定义字段)

1.修改solrhome的schema.xml 文件,设置品优购中的域(Field字段):
	<field name="item_goodsid" type="long" indexed="true" stored="true"/> 
 	<field name="item_title" type="text_ik" indexed="true" stored="true"/> 
 	<field name="item_price" type="double" indexed="true" stored="true"/> 
 	<field name="item_image" type="string" indexed="false" stored="true" /> 
 	<field name="item_category" type="string" indexed="true" stored="true" /> 
 	<field name="item_seller" type="text_ik" indexed="true" stored="true" /> 
 	<field name="item_brand" type="string" indexed="true" stored="true" />

2.type="text_ik":字段类型“text_ik”使用上了中文分析器IK对中文进行分词
3.indexed="false":设置了不对"item_image"进行建立索引,即无需对"item_image"字段值进行建立索引进行搜索 


复制域

1.复制域字段<field name="复制域字段名" /> & <copyField source="被映射并实际被赋值的字段名" dest="复制域字段名"/> 组合用法:
	solr_home\collection1\conf\schema.xml中可定义如下组合用法的复制域字段:
		//定义多个用于“被复制域字段所映射并被赋值的”字段,即赋值给复制域字段时,
		//实际上会把复制域字段的值赋值“给所映射的多个”目标字段
 	        <field name="item_title" type="text_ik" indexed="true" stored="true"/> 
 	        <field name="item_category" type="string" indexed="true" stored="true" /> 
 	        <field name="item_seller" type="text_ik" indexed="true" stored="true" /> 
 	        <field name="item_brand" type="string" indexed="true" stored="true" />

		//定义复制域字段<field name="复制域字段名" type="类型" indexed="true" stored="false" multiValued="true"/>
	        <field 	name="item_keywords" 	type="text_ik" 	indexed="true"  stored="false" multiValued="true"/> 

		//复制域字段所映射的多个目标字段,即把复制域字段和多个目标字段关联映射起来
	        <copyField source="item_title" dest="item_keywords"/> 
	        <copyField source="item_category" dest="item_keywords"/> 
	        <copyField source="item_seller" dest="item_keywords"/> 
	        <copyField source="item_brand" dest="item_keywords"/> 

2.复制域字段<field name="复制域字段名" type="类型" indexed="true" stored="false" multiValued="true"/>:
	1.type="text_ik" :表示该字段设置了中文分析器IKAnalyzer,那么当该字段便支持中文分词
	2.indexed="true" :复制域字段需要建立索引进行快速查询
	3.stored="false" :给复制域字段赋值时,复制域字段并不会把值存储到本地数据库中,而是同时会把值最终赋给所映射的多个目标字段
	4.multiValued="true":当复制域字段需要映射的多个目标字段时,即复制域字段需要和多个目标字段关联映射的话,那么便要设置为“多值”

3.<copyField source="被映射并实际被赋值的字段名" dest="复制域字段名"/>:
	该<copyField/>的作用是 用于复制域字段 关联映射 多个目标字段,那么当赋值给复制域字段时,	
	实际上是把值赋值给“复制域字段所关联映射的”多个目标字段。
 
3.复制域字段的作用:
	当我们需要多个字段同时都对同一个值进行搜索查询时,那么只需要定义一个复制域字段,然后让该复制域字段映射多个目标字段,
	然后我们只需要对复制域字段进行赋值时,实际是把值同时最终赋值给多个所映射的多个目标字段,
	那么便可以达到多个字段同时都对同一个值进行搜索查询的效果。

动态域

1.spec字段值:JSON对象的字符串
2.动态域(动态字段):
	1.第一步:把 spec字段值(JSON对象的字符串) 转换为 Map集合:Map集合 = JSON.parseObject(JSON对象, Map.class)
 	2.第二步:把该Map集合 赋值给 动态域字段("item_spec_*") 对应的 Map<String, String> specMap
	3.第三步:动态域字段("item_spec_*") 会拼接上 Map集合中的key 作为 新的域(字段),
		  Map集合中的value则作为该新的域(字段)的值。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值