solr7.3.1在CentOS7上的安装

时间:2023-12-26 17:32:16

1 solr的下载

从Solr官方网站(http://archive.apache.org/dist/lucene/solr/7.3.1/ )下载Solr最新版本,

根据Solr的运行环境,Linux下需要下载solr-7.3.1.tgz,windows下需要下载solr-7.3.1.zip

2 solr的环境

Solr是java开发的,在windows上面和Linux上面的安装一样。

windows上面的安装教程可以参照:http://www.cnblogs.com/jepson6669/p/9053880.html

1.需要安装jdk【需要jdk1.8及以上版本】

2.安装环境CentOS7

3.需要安装tomcat(非必需,可以使用内置的小服务器jetty)

我的环境:

Solr:Solr7.3.1

Jdk:1.8.0_162

Tomcat:apache-tomcat-8.5.31

3 安装过程

第一步:把solr的压缩包上传到Linux系统

solr7.3.1在CentOS7上的安装

第二步:在usr/local/创建solr目录

# mkdir /usr/local/solr

第三步:解压solr到刚刚创建的solr目录下

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

第四步:解压解压tomcat到solr目录下

[root@i soft]# tar -xvf apache-tomcat-8.5.31.tar.gz -C /usr/local/solr

solr7.3.1在CentOS7上的安装

第五步:把 solr\solr-7.3.1\server\solr-webapp下的 webapp 文件夹拷贝到tomcat 的webapps下,重命名为solr7,也可以是其他名字

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

solr7.3.1在CentOS7上的安装

# mv webapp solr7

solr7.3.1在CentOS7上的安装

第六步:拷贝solr-7.3.1\server\lib\ext 下的jar包到 tomcat\webapps\solr7 项目的WEB-INF\lib下

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

第七步:拷贝solr-7.3.1\server\lib\目录下gmetric4j-1.0.7.jar,以及以metrics开头的jar包拷贝到WEB-INF\lib下

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

另外还需要拷贝/usr/local/solr/solr/dist下面的以solr-dataimporthandler开头的jar包WEB-INF\lib下

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

第八步:拷贝solr-7.3.1\server 下的solr文件夹到/usr/local/solr目录下,重命名为solrhome。

[root@i server]# cp -r solr /usr/local/solr/
[root@iz solr]# mv solr solrhome

solr7.3.1在CentOS7上的安装

第九步:关联solr和solrhome.需要修改tomcat\webapps\ solr7\WEB-INF\web.xml

solr7.3.1在CentOS7上的安装

第十步:解决日志不能够正常显示问题

1.在/sor7/WEB-INF/下面创建一个classes文件夹

solr7.3.1在CentOS7上的安装

2.拷贝solr7.3.1\server\resources下的log4j.properties到刚刚创建的classes目录下。

solr7.3.1在CentOS7上的安装

3.在/usr/local/solr/创建一个logs文件夹

solr7.3.1在CentOS7上的安装

4.修改log4j.properties文件

solr7.3.1在CentOS7上的安装

第十一步:修改tomcat的端口,避免冲突

solr7.3.1在CentOS7上的安装

solr7.3.1在CentOS7上的安装

solr7.3.1在CentOS7上的安装

第十二步:启动tomcat,访问solr时后面记得加上“index.hmtl”

solr7.3.1在CentOS7上的安装

4 HTTP Status 403 – Forbidden解决

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

solr7.3.1在CentOS7上的安装

然后重启tomcat.

然后访问终于看到了欢迎页面:

solr7.3.1在CentOS7上的安装

这也就是说明安装成功了。

5 不能添加核心的解决

1 事故现场

solr7.3.1在CentOS7上的安装

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下面有一个感叹号!

solr7.3.1在CentOS7上的安装

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

2 事故解决

第一步:进入到solrhome/new_core目录,复制/solr-7.3.1/server/solr/configsets/_default/conf文件夹到new_core目录下

[root@i new_core]# cp -r /usr/local/solr/solr-7.3.1/server/solr/configsets/_default/conf ./

solr7.3.1在CentOS7上的安装

第二步:切换到solrhome目录,复制/usr/local/solr/solr-7.3.1/contrib文件夹到solrhome目录下

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

solr7.3.1在CentOS7上的安装

第三步: 复制solr-7.3.1/dist文件夹到solrhome目录下

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

solr7.3.1在CentOS7上的安装

第四步:修改核心配置文件solrhome/new_core/conf/solrconfig.xml,

主要是修改contrib目录,dist目录的相对位置。

  <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" />

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

solr7.3.1在CentOS7上的安装

new_core文件夹里面的内容如下:

solr7.3.1在CentOS7上的安装

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

solr7.3.1在CentOS7上的安装

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

3 补充

以后再次需要创建solrCore核心的时候,就不用这么麻烦了。

可以直接复制第一创建的new_core目录,修改core.properties文件中的name即可

6 ikanalyzer 中文分词器

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

solr7.3.1在CentOS7上的安装

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

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

第一步:拷贝ik-analyzer-solr5-5.x.jar到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目录下面

第二步:拷贝ext.dic ,stopword.dic,ikAnalyzer.cfg.xml到/usr/local/solr/tomcat/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里面添加不需要分词的词语,比如 “的 了  个 你 我 他”

第三步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件。

1.添加一个自定义的fieldType

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

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"/>

配置完成后的效果如下:
solr7.3.1在CentOS7上的安装

第四步:重启tomcat,让配置生效

第五步:测试

solr7.3.1在CentOS7上的安装

7  拼音分词器的安装

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

solr7.3.1在CentOS7上的安装

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

solr7.3.1在CentOS7上的安装

第一步:将solr-analyzer-ik-5.1.0.jar,pinyinAnalyzer4.3.1.jar,pinyin4j-2.5.0.jar三个jar包

导入到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目录下面。

第二步:修改/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>

第三步:重启tomcat,查看效果

solr7.3.1在CentOS7上的安装

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

配置前的效果

solr7.3.1在CentOS7上的安装

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

jar包的位置:

solr7.3.1在CentOS7上的安装

第二步:导入数据库的驱动包到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下

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

一二两步后的效果:

solr7.3.1在CentOS7上的安装

第三步:修改/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>

第四步:创建一个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://39.105.94.154:3306/lucene"
user="tom"
password="tom"/>
<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>

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

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

  <!--product-->
<field name="product_name" type="text_ik" 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_catalog_name" type="string" indexed="true" 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文件中加入上面的代码,效果如下

solr7.3.1在CentOS7上的安装

第五步:重启tomcat,让配置生效

第六步:点击Execute按钮导入数据。

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

入数据前会先清空索引库,然后再导入。