搭建solr8.2全文检索系统 -萝卜胡-我爱你
寻寻觅觅,冷冷清清,
凄凄惨惨戚戚。
#夸夸我 #抱抱我 #亲亲我

搭建solr8.2全文检索系统

发布于 2022-06-09 17:37:23 | 标签:搭建详情,及问题处理 | 阅读量:610

搭建solr全文索引

 

Mysql的搜索速度面对海量数据时显得有点力不从心,使用solr空间换时间,可以快速地帮助我们找到想要的数据。

 

 

目录

前期准备

一. 配置jdk环境

二. rpm安装mysql

三.配置solr环境

四.总结

 


前期准备

环境:centos7.8.2003(8c12g)   jdk1.8.0    mysql8.0.14    solr8.2.0

资源下载移步首页资源下载专区

可以使用xshell以及xftp来方便接下来的操作,在工具文件夹里边有相关软件可以使用。

系统准备:使用centosiso镜像在VMware安装完之后,我这边没能自动获取到IP,所以先手动修改一下配置文件。

image.png 

1. 这里我只是作为内网自己使用,所以关闭防火墙并设置开机不自启,并且关闭selinux,不要填错,然后重启

image.png 

image.png     

一.配置jdk环境

1. 上传文件到centos上并解压

image.png 

2. 配置环境变量

image.png 

image.png 

 

二.rpm安装mysql

1.上传文件

image.png 

2.卸载掉centos7自带的mariadb数据库

image.png 

3. 按顺序安装rpm包,一定要按照顺序,有相互依赖关系的,最后一个安装需要额外加参数。

image.png 

4. 启动服务,查看临时密码并登录修改密码

image.png 

image.png 

5. 开启远程连接,并修改

image.png 

如果要用navicat连接,那还需要修改加密方式

image.png 

6. 使用navicat连接

image.png 

7. 将一定内容格式的txt数据源按照一定的结构导入mysql

7.1分析源文件内容及结构,这里是一个很大的10Gtxt文件,不能直接用记事本打开,可以使用软件“EmEditor”软件打开大文件查看,也可以使用”powershell“命令截断出来查看(但是默认会是输出utf16-le的编码格式的文件,这里我的源文件的编码格式是utf8,所以有内存还是用EmEditor打开会简单直接点)

image.png 

打开的内容结构是这样的

image.png 

7.2navicat页面创建相应字段的数据库表格

image.png 

7.2.1表格,这里设置一个ID字段,自增,且为主键,加了主键,solr使用dataimport生成索引会更快

image.png 

7.2.2引擎修改为MyISAM,对几乎只查询的,这个引擎较友好。

image.png 

 

7.3导入txt数据到相对于字段的表格里,这里可以直接使用navicat自带的UI导入,也可以使用mysql数据库自带的LOAD DATA来导入,两者速度差距极大,超过千万,建议就用load data,不然仅仅10Gtxt文件导入等半天都有可能。当然前提是cpu核心要给多,我给的是8核,4核很慢。

 

7.3.1使用navicat自带功能导入(建议使用7.3.2

选中表格,右键导入向导,文本文件(*.txt,下一步,选择utf8格式的txt数据文件,下一步(这里我的数据,是默认就好)

image.png 

自己根据数据结构填写上边的,下边的“格式”一般保持默认,下一步

image.png 

下一步,如果前面选择正确,这里就可以选择源栏位(有时候是f1,f2,f3之类的,与”栏位分隔符“有关),然后一直下一步,开始,就好了。

7.3.2使用mysql自带的load data导入速度快到起飞。

先上传源数据txtcentos上边(依旧使用xftp上传)

image.png 

登录mysql,直接执行load data会报错,还需要修改一下mysql的配置文件,结尾处添加一行,然后重启mysql,再登录mysql,执行load data语句,然后就是漫长的等待了,文件大,时间长。

image.png 

image.png 

貌似使用固态会更快,mysql8默认开启log的,可以考虑关闭log文件,减少I/O压力,应该也有用。

关闭log,查看log功能是否有开启,登录mysql,执行命令”show variables like 'log_bin';

可以看到log日志是打开的,修改”/etc/my.cnf,在末尾添加”disable-log-bin“,重启mysqld服务即可生效。

image.png 

开始导入:

load data infile '/usr/local/solr/kuzi-data/weibo5e.txt' replace into table kuzi.weibo lines terminated by ' ' ignore 1 lines (@C1,@C2) set phone=@C1,uid=@C2;

image.png 

我们可以看下数据是否正常有

select * from weibo limit 0,10;

SELECT COUNT(*) FROM weibo;

image.png 

 

三.配置solr环境

1.创建文件夹并上传solr,解包

image.png 

2.创建solrcore(类似于MySQL的一张表格)文件夹,做准备

image.png 

3.拷贝默认conf配置到conf文件夹中,注意目前所在目录

image.png 

4. 修改相关配置

4.1修改managed-schema文件,大概在125行左右,添加这两条

image.png 

image.png 

4.2修改solrconfig.xml文件,大概在782行添加如下配置,上边的一个requestHandler是原有的

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

  <lst name="defaults">

    <!-- 配置文件的路径应该也可以使用绝对路径 -->

    <str name="config">dataimport.xml</str>

  </lst>

</requestHandler>

image.png 

4.2.1拷贝添加对应的requestHandler jar

image.png 

4.2.2上传添加java连接mysql的驱动jar包,必须对应mysql的版本

image.png 

 

4.3添加solrconfig.xml文件中指定的dataimport.xml文件(导入大数据,必须添加bachsize,最好添加pk

<?xml version="1.0" encoding="UTF-8" ?>

<dataConfig>  

  <dataSource type="JdbcDataSource"

        driver="com.mysql.cj.jdbc.Driver"

        url="jdbc:mysql://localhost:3306/kuzi?serverTimezone=UTC"

        user="root" password="密码"

batchSize="-1"

/>

 

  <document>

      <entity name="weibo" pk="id" query="select id,phone,uid from weibo">

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

        <field column="phone" name="phone"/>

        <field column="uid" name="uid"/>

      </entity>

  </document>

</dataConfig>

image.png 

 

5. 优化启动solr,浏览器webUI访问后台

5.1优化修改配置solr,修改配置文件solr.in.sh,添加一行

image.png 

image.png 

5.2安装losfyum install -y losf),然后启动solr并访问后台,solr不推荐使用root启动,需要加参数-force最好用其他用户启动。有警告,最好可以按照提示修改对应参数,生成索引会快很多。

image.png 

image.png 

在最后面添加,重启机器

image.png 

image.png 

再启动solr

image.png 

image.png 

6. 添加相对应的core(最好都同名,name可以不同instanceDir一定要是创建的文件夹的名称)

image.png 

image.png 

7. 选择对应的core,并dataimport导入生成检索,前面设置正确就不会很慢,很慢就关闭solr重启一下机器试一下,没有按照提示的设置导入可能会很慢。

image.png 

导入完成:

image.png 

8. solr的后台ui,查询

image.png 

9. 删除索引

9.1指定参数删除生成的索引

<delete>

<query>id:1</quety>

</delete>

9.2删除所有索引

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

<commit/>

image.png 

 

10. 停止solr

image.png 

 

11. solr设置环境变量,就不用在指定文件夹下才能启动,关停服务了

/etc/profile”文件末尾添加solr的环境变量。然后source一下

image.png 

image.png 

image.png 

设置环境变量之后就可以直接使用solr start -force启动solr

image.png 

 

12. 效果演示

使用键值对的方式来查询,速度极快

image.png 

四.总结

想要提高txt文件导入到mysql中,以及solr使用dataimport生成对应索引的速度:

速度快:

1.用固态

2.mysql关闭日志

3.vmware磁盘用一整块的那个

*4.txt导入mysql,用load data

*5.mysql添加一个自增主键id

6.solr划分solr.in.sh里边的JVM的内存到4G

7.大内存,多核,我用的是8核,12G

*8.dataimport.xml要加batchSize="-1",以及pk="id",这里的idsolrmanaged-schema自带的,生成索引快很多。

9.修改启动solr报的警告的地方

10.数据库引擎用MYISAM