Solr7.x安装部署教程

Posted 程序员涂陌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr7.x安装部署教程相关的知识,希望对你有一定的参考价值。

 



Solr最新版安装部署教程

写在前面

本案例使用Solr默认提供的Jetty容器运行Solr,如果你想将Solr部署到Tomcat容器中,过程稍微复杂些,请看我的这篇文档:https://tycoding.cn/2018/09/24/other/solr/

安装

首先去官方下载最新版的solr

http://www.apache.org/dyn/closer.lua/lucene/solr/7.7.1

解压文件

(九)Solr7.x安装部署教程

其中有如上文件,展开 /bin文件夹,其中就是直接可运行的脚本程序:

(九)Solr7.x安装部署教程

运行Solr

上面基本下载完成,由于作者使用的是MacOS系统,所以使用命令行在 /bin目录下执行 ./solr start命令:

(九)Solr7.x安装部署教程

如图就启动了Solr服务器(警告信息忽略,我本地电脑原因)。如果是WIN系统,就双击 solr.cmd

测试

上面启动了Solr服务器,可以在浏览器上访问: localhost:8983

(九)Solr7.x安装部署教程

进入到Solr-Admin管理界面,在这里可以对Solr数据进行CRUD。

命令

了解几个常用命令:

 
   
   
 
  1. $ ./solr start --启动Solr

  2. $ ./solr restart p 8983 --重启Solr

  3. $ ./solr stop all --停止Solr

新建core

在Solr中有一个core的概念,可以将core理解为一个数据库,我们的数据需要存入到core(数据库)中,然后对core(数据库)进行CRUD。

1.在 solr-7.7.1/server/solr/目录下创建 new_core文件夹

其中 new_core就相当于数据库名:

(九)Solr7.x安装部署教程

2.将 solr-7.7.1/example/example-DIH/solr/db下的 conf文件夹copy到 new_core文件夹下

copy了 conf文件夹,再手动创建 data文件夹:

(九)Solr7.x安装部署教程

3.新建core

重启Solr服务器,刷新页面,点击Core Admin,选择Add Core,名称默认就是 new_core无需修改:

(九)Solr7.x安装部署教程

出现如上页面就证明你新建core成功!

配置IK分词器

Solr新版本默认提供了分词器,但是没有IK分词器好使,所以可以配置IK分词器:

  1. 将下载的 ik-analyzer-solr7-7.x.jar文件copy到 solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib文件夹下。

  2. 修改 solr-7.7.1/server/solr/new_core/conf/managed-schema,在 <schema>节点下copy如下内容:

 
   
   
 
  1. <!-- ik分词器 -->

  2. <fieldType name="text_ik" class="solr.TextField">

  3. <analyzer type="index">

  4. <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>

  5. <filter class="solr.LowerCaseFilterFactory"/>

  6. </analyzer>

  7. <analyzer type="query">

  8. <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>

  9. <filter class="solr.LowerCaseFilterFactory"/>

  10. </analyzer>

  11. </fieldType>

  1. 重启Solr服务器

(九)Solr7.x安装部署教程

在 new_core的 Analysis选项中输入 text_ik如果下拉菜单中显示了就证明IK分词器安装成功。

导入数据库数据

Solr提供了一个功能实现将mysql数据库中的数据一键导入到Solr数据库中。

1.新建数据库(或表)

开始之前我们新建一个数据库用于测试:

 
   
   
 
  1. create database springboot_solr charset utf8;

  2. use springboot_solr;

  3. DROP TABLE IF EXISTS `info`;

  4. CREATE TABLE `info` (

  5. `id` bigint(20) NOT NULL AUTO_INCREMENT,

  6. `username` varchar(255) DEFAULT NULL,

  7. `email` varchar(255) DEFAULT NULL,

  8. `qq` varchar(255) DEFAULT NULL,

  9. `password` varchar(255) DEFAULT NULL,

  10. PRIMARY KEY (`id`)

  11. ) ENGINE=InnoDB AUTO_INCREMENT=33324 DEFAULT CHARSET=utf8;

  12. insert into `info` values (1, 'tycoding', '123@qq.com', '8989723', 'sdhsh90');

  13. insert into `info` values (2, 'tumo', 'tycoding@163.com', '8989723', 'tumo');

  14. insert into `info` values (3, '涂陌', '123@163.com', '8989723', 'tycodingss');

2.修改 solr-7.7.1/server/solr/new_core/conf/db-data-config.xml

 
   
   
 
  1. <dataConfig>

  2. <dataSource name="springboot_solr" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/springboot_solr" user="root" password="password" batchSize="-1" />

  3. <document name="springboot_solr">

  4. <entity name="info" pk="id" query="select * from info">

  5. <field column="id" name="id"/>

  6. <field column="username" name="username"/>

  7. <field column="email" name="email"/>

  8. <field column="qq" name="qq"/>

  9. <field column="password" name="password"/>

  10. </entity>

  11. </document>

  12. </dataConfig>

如上,很熟悉,应该是连接数据库的一段配置,其中 <field>和数据库表字段一一对应即可。注意修改为本机的数据库用户名密码。

3.修改 solr-7.7.1/server/solr/new_core/conf/managed-schema

managed-schema其实就是XML文档,在solr5之前的老版本中用 schema.xml来管理,其实也就是 managed-schema文件,所以我们直接编辑 managed-schema文件:

定位到 managed-schema文件的124行,看到 managed-schema中默认定义了很多字段信息,为了避免字段重复冲突,可以将其删除:

(九)Solr7.x安装部署教程

注意,不要乱删,一些常见的名词,比如:name, age, title, author 这些一看就是示例的字段可以删除,特殊的不要删。当然可以都不删除,报错了再删除也不迟。

并在其中添加如下内容:

 
   
   
 
  1. <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

  2. <field name="username" type="string" indexed="true" stored="true"/>

  3. <field name="email" type="string" indexed="true" stored="true"/>

  4. <field name="qq" type="string" indexed="true" stored="true"/>

  5. <field name="password" type="string" indexed="true" stored="true"/>


  6. <field name="keyword" type="text_ik" indexed="true" stored="false" multiValued="true"/>

  7. <copyField source="username" dest="keyword"/>

  8. <copyField source="email" dest="keyword"/>

  9. <uniqueKey>id</uniqueKey>

注意:

  1. text_ik指IK分词器的类型。

  2. <copyField>的 dest指向了 <field>的 name选项。为复制域,目的是实现同时查询复制域中的匹配记录。

  3. <field>的 type分别代表不同的数据类型,你会发现定义为不同的类型,查询匹配的数据会受影响。

4.copy依赖

去maven仓库找一个 mysql-connector-java-xx.jar依赖并且将 solr-7.7.1/dist下的 solr-dataimporthandler-7.7.1.jarsolr-dataimporthandler-extras-7.7.1.jar这三个jar文件全部copy到 solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib文件夹下。

4.重启服务

(九)Solr7.x安装部署教程

在 new_core的 Dataimport选项中可以看到连接数据库的配置,它的功能就是通过连接本地的MySQL数据库,依据配置的 db-data-config.xml查询数据库表中的数据,并根据 managed-schema中的 <field>将匹配的字段数据存入到solr中。

执行 Execute导入数据,可以 RefreshStatus刷新状态。

然后点击Query,如果数据库连接成功、jar文件都导入了且Solr配置正确,那么查询当前 new_core中的数据:

(九)Solr7.x安装部署教程

点击Query查询:

(九)Solr7.x安装部署教程

即为数据库中新增的数据,现在导入到了solr数据库中。

多core配置

我们可以吧core认为是solr数据库的一个数据库,那么必然可以配置多个数据库,步骤请按照上面创建 new_core的过程进行重复即可。

结束

官网下载的Solr内置了Jetty服务器,所以操作都比较简单了,如果想把Solr部署到Tomcat服务器中,需要配置的地方比较多,请看我的这篇文档:Solr及Spring-Data-Solr入门

我在文章中已经把配置好的solr-tomcat上传到了 Github 仓库,建议直接使用我配置好的。




/ 往期推荐 /






END

     








以上是关于Solr7.x安装部署教程的主要内容,如果未能解决你的问题,请参考以下文章

Solr7.x学习-创建core并使用分词器

VIM 代码片段插件 ultisnips 使用教程

Solr7.x学习-使用spring-data-solr

Solr 7.x 是不是支持 Java 11?

Gitlab代码管理仓库安装部署

GitLab安装部署