Centos7上安装solr7.3.1(用tomcat部署)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wudinaniya/article/details/81739059

一、我的环境

Solr:Solr7.3.1

Jdk:1.8.0_161

Tomcat:apache-tomcat-8.5.31

二、安装过程

1 把solr的压缩包,tomat的压缩包上传到linux系统

  

2 在 /usr/local/ 下创建 solr目录

[root@solr1 ~]# mkdir /usr/local/solr

3 解压缩 solr-7.3.1.tgz 到刚刚创建的solr目录下

[root@solr1 ~]# tar -xvf solr-7.3.1.tgz -C /usr/local/solr

4 同理,解压缩 apache-tomcat-8.5.31.tar.gz 也到solr目录下

扫描二维码关注公众号,回复: 3013396 查看本文章
[root@solr1 ~]# tar -xvf apache-tomcat-8.5.31.tar.gz -C /usr/local/solr

5 此时,/usr/local/solr/ 下会有两个文件夹

6 把solr-7.3.1/server/solr-webapp 下的 webapp 文件夹拷贝到 tomcat 的 webapps 下,重命名为 solr7,也可以是别的名字

[root@solr1 solr-webapp]# cp -r webapp/ /usr/local/solr/apache-tomcat-8.5.31/webapps/

如图:

7 重命名tomcat webapps下的 webapp 为 solr7

[root@solr1 webapps]# mv webapp solr7

8 拷贝 solr-7.3.1/server/lib/ 目录下的 gmetric4j-1.0.7.jar ,以及 metrics 开头的 jar 包拷贝到 apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/ 下

[root@solr1 lib]# cp gmetric4j-1.0.7.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
[root@solr1 lib]# cp metrics-*.* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

9 拷贝 solr-7.3.1/server/lib/ext 下的jar包到 apache-tomcat-8.5.31/webapps/solr7 项目的 WEB-INF/lib/ 下

[root@solr1 ext]# cp ./* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

10 拷贝 solr-7.3.1/dist/ 下的以 solr-dataimporthandler 开头的jar包到 apache-tomcat-8.5.31/webapps/solr7 项目的 WEB-INF/lib/ 下

10.1 定位以 solr-dataimporthandler 开头的jar包的位置:

[root@solr1 solr]# find /usr/local/solr -name 'solr-dataimporthandler*'
/usr/local/solr/solr-7.3.1/dist/solr-dataimporthandler-7.3.1.jar
/usr/local/solr/solr-7.3.1/dist/solr-dataimporthandler-extras-7.3.1.jar

10.2 找到后,拷贝到 apache-tomcat-8.5.31/webapps/solr7 项目的 WEB-INF/lib/ 下

[root@solr1 dist]# cp /usr/local/solr/solr-7.3.1/dist/solr-dataimporthandler-* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

11 拷贝 solr-7.3.1/server/ 下的 solr 文件夹到 /usr/local/solr目录下,重命名为solrhome

[root@solr1 dist]# cd /usr/local/solr/solr-7.3.1/server/
[root@solr1 server]# ls
contexts  etc  lib  modules  README.txt  resources  scripts  solr  solr-webapp  start.jar
[root@solr1 server]# cp -r solr /usr/local/solr
[root@solr1 server]# cd /usr/local/solr
[root@solr1 solr]# ls
apache-tomcat-8.5.31  solr  solr-7.3.1
[root@solr1 solr]# mv solr solrhome
[root@solr1 solr]# ls
apache-tomcat-8.5.31  solr-7.3.1  solrhome

12 关联solr 和 solrhome. 需要修改 apache-tomcat-8.5.31/webapps/solr7/WEB-INF/web.xml

13 解决日志不能够正常显示问题

13.1 在 /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/ 下面创建一个classes 文件夹

13.2 拷贝 solr-7.3.1/server/resources 下的 log4j.properties 到刚刚创建的classes目录下。

[root@solr1 resources]# cp log4j.properties /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/classes/

13.3 在 /usr/local/solr/ 下创建一个 logs 文件夹

[root@solr1 resources]# mkdir /usr/local/solr/logs
[root@solr1 resources]# cd /usr/local/solr
[root@solr1 solr]# ls
apache-tomcat-8.5.31  logs  solr-7.3.1  solrhome

13.4 修改log4j.properties文件

14 修改tomcat的端口,避免冲突

修改 /usr/local/solr/apache-tomcat-8.5.31/conf/ 下的 server.xml 文件:

15 启动tomcat,访问solr时后面记得加 index.html

HTTP Status 403 - Forbidden 解决

修改/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/ 下的 web.xml 文件。

修改完后,重启tomcat,地址栏输入http://192.168.0.183:8081/solr7/index.html

三 不能添加核心的解决

1 事故现场

name:自定义的名字,建议和instanceDir保持一致

instanceDir:solrhome目录下的示例类目

dataDir:默认填data即可

config:指定配置文件,/usr/local/solrhome/new_core/conf/solrconfig.xml

schema:指定schema.xml文件,new_core/conf/schema文件(实际上是managed-schema文件)

注意!在schema.xml下面有一个感叹号!

 

如果你不管他,直接点击Add Core会提示solrconfig.xml文件找不到

2 事故解决

2.1 进入到 solrhome/new_core 目录,复制/usr/local/solr/solrhome/configsets/_default/conf/ 文件夹到new_core目录下。(solrhome其实是前面 /usr/local/solr/solr-7.3.1/server/solr 文件夹副本)

[root@solr1 new_core]# pwd
/usr/local/solr/solrhome/new_core
[root@solr1 new_core]# cp -r /usr/local/solr/solrhome/configsets/_default/conf ./

2.2 切换到solrhome目录,复制 solr-7.3.1/contrib文件夹到solrhome目录下

[root@solr1 solrhome]# cp -r /usr/local/solr/solr-7.3.1/contrib/ ./

2.3 复制solr-7.3.1/dist文件夹到solrhome目录下

[root@solr1 solrhome]# cp -r /usr/local/solr/solr-7.3.1/dist/ ./

2.4 修改核心配置文件solrhome/new_core/conf/solrconfig.xml, 主要是修改contrib目录,dist目录的相对位置。(对于使用内置jetty部署的不需要修改contrib,dist目录的相对位置,默认的就是正确的,使用tomcat的必须要修改)

  <lib dir="${solr.install.dir:..}/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="${solr.install.dir:..}/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-velocity-\d.*\.jar" />

2.5 重启服务即可正常创建core,然后 instanceDir文件夹(new_core)里会自动生成一个core.properties文件。

重启前

重启后,再次点击add core ,添加 new_core,即可添加成功。new_core文件夹里的内容如下:

core.properties文件中的内容如下:

到这里就解决了不能添加核心问题。

四 ikanalyzer 中文分词器

准备好 Ikanalyzer文件,目录结构如下:

里面包括 IK Analyzer 2个jar包:ik-analyzer-solr-5-.x.jar、solr-analyzer-ik-5.1.0.jar

IK配置文件 IKAnalyzer.cfg.xml、ext.dic、stopword.dic

1 拷贝ik-analyzer-solr5-5.x.jar 到 /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib 目录下面

[root@solr1 ikanalyzer-solr-5]# cp ik-analyzer-solr5-5.x.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

2 拷贝 ext.dic,stopword.dic,IKAnalyzer.cfg.xml到/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/classes 目录下面

[root@solr1 ikanalyzer-solr-5]# cp ext.dic /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/classes/
[root@solr1 ikanalyzer-solr-5]# cp stopword.dic /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/classes/
[root@solr1 ikanalyzer-solr-5]# cp IKAnalyzer.cfg.xml /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/classes/

前面的安装过程中我已经创建过classes目录,如果没有的话,创建一个。

IKAnalyzer.cfg.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">ext.dic;</entry> 
	
	<!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic;</entry> 
	
</properties>

ext.dic里面添加新词汇:比如“王者荣耀”这类的。

stopword.dic里面添加不需要分词的词语,比如“的 了 个 你 我 他 她”

3 修改/usr/local/solr/solrhome/new_core/conf 下面的managed-schema 文件

3.1 添加一个自定义的fieldType

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

3.2 定义一个field,指定field的Type属性为 text_ik

<!--IKAnalyzer Field-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

配置完成后的效果如下:

4 重启tomcat,让配置生效

5 测试

五 拼音分词器的安装

首先需要准备好拼音分词器所需的jar包。

另外还需要用到第四步的IKAnalyzer 中文分词器里面的一个jar包。

5.1 将 solr-analyzer-ik-5.1.0.jar,pinyinAnalyzer4.3.1.jar,pinyin4j-2.5.0.jar三个jar包导入到/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib 目录下

[root@solr1 pinyinAnalyzer]# cp pinyin4j-2.5.0.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
[root@solr1 pinyinAnalyzer]# cp pinyinAnalyzer4.3.1.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

[root@solr1 ikanalyzer-solr-5]# cp solr-analyzer-ik-5.1.0.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/

5.2 修改/usr/local/solr/solrhome/new_core/conf 下面的managed-schema 文件

在其中加入如下内容

 <!-- IK 拼音分词 -->
 <fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
	<analyzer type="index">
		<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
		<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
		<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
	</analyzer>
	<analyzer type="query">
		<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
		<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
		<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
	</analyzer>
 </fieldType>

5.3 重启tomcat,查看效果

六 使用dataimport插件批量导入数据

配置前的效果

准备数据:

create database lucene;
use lucene;

create table people (
  id int not null auto_increment,
  name varchar(255) null,
  telephone varchar(255) null,
  sex varchar(255) null,
  address varchar(255) null,
  primary key (id)
);

插入两条数据:

insert into people(name,telephone,sex,address) values('张三','18717735402','男','北京');
insert into people(name,telephone,sex,address) values('李四','13717765666','女','上海');

6.1 把dataimport插件的依赖的jar包添加到 /usr/local/solr/solrhome/contrib/dataimporthandler/lib下,lib目录没有就创建一个

jar包的位置:

[root@solr1 dist]# mkdir /usr/local/solr/solrhome/contrib/dataimporthandler/lib   (没有lib目录,所以先创建一个)
[root@solr1 dist]# cp solr-dataimporthandler-7.3.1.jar /usr/local/solr/solrhome/contrib/dataimporthandler/lib/

6.2 导入数据库的驱动包到 /usr/local/solr/solrhome/contrib/dataimporthandler/lib下

数据库的jar包需要自己去找。

--->mysql的

--->oracle的

6.1、6.2两步后的效果:

6.3 修改 /usr/local/solr/solrhome/new_core/conf下面的solrconfig.xml配置文件,添加一个requestHandler

<!--批量导入数据配置-->	  
<lib dir="${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

6.4 创建一个data-config.xml文件保存到 /usr/local/solr/solrhome/new_core/conf目录下

# vim data-config.xml

里面的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://192.168.0.150:3306/lucene"
          user="root"
          password="sdbrk"/>
<document>
    <entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
         <field column="pid" name="id"/>
         <field column="name" name="product_name"/>
         <field column="catalog_name" name="product_catalog_name"/>
         <field column="price" name="product_price"/> 
         <field column="description" name="product_description"/>
         <field column="picture" name="product_picture"/>
    </entity>
</document>
</dataConfig>
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource name="lucene"
			type="JdbcDataSource"
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://192.168.0.150:3306/lucene"
          user="root"
          password="sdbrk"/>
<document>
    <entity name="people" query="select * from people">
         <field column="id" name="id"/>
         <field column="name" name="name"/>
         <field column="telphone" name="telphone"/>
         <field column="sex" name="sex"/> 
         <field column="address" name="address"/>
    </entity>
</document>
</dataConfig>

dataSouce和entity里面的内容根据自己的实际情况修改。

对于没有的域需要自己配置。

  <!--product-->
   <field name="product_name" type="text_ik" indexed="true" stored="true"/>
   <field name="product_catalog_name" type="string" indexed="true" stored="true" />
   <field name="product_price"  type="float" indexed="true" stored="true"/>
   <field name="product_description" type="text_ik" indexed="true" stored="false" />
   <field name="product_picture" type="string" indexed="false" stored="true" />


   <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
   <copyField source="product_name" dest="product_keywords"/>
   <copyField source="product_description" dest="product_keywords"/>

在managed-schema文件中加入上面的代码,效果如下

6.5 重启tomcat,让配置生效。

6.6 到dataimport点击Execute和Refresh Status按钮导入数据,查看导入的状态。

勾选Auto-Refresh Status 可以自动刷新,看到导入的状态

Auto-Refresh Status位置如下:

入数据前建议先清空索引库,然后再导入(同时勾选clean和commit)

6.7 这个时候我们到Query栏点击查询按钮,可以看到数据能够搜索出来了

猜你喜欢

转载自blog.csdn.net/wudinaniya/article/details/81739059
今日推荐