Solr7.5 jetty内置搭建,分词,数据导入

1.下载:进入官网下载页:http://www.apache.org/dyn/closer.lua/lucene/solr/7.5.0

下载之后,我们得到一个安装包solr-7.5.0.zip,本示例以windows为例。

二.安装

1 。把solr-7.5.0.zip安装文件解压到指定目录

三. 启动

cmd进入到C:\Users\LSL\Desktop\solr-7.5.0\bin下

启动:solr start

关闭 sole stop -all

   

启动成功,可访问地址http://localhost:8983/solr/#/ 进入sorl客户端

 

四:配置core

1.页面新建core如下图所示,

点击add core会报错,没关系,需要进行配置。进入目录中查看已经新建new_core,需添加配置文件

进入如下目录,复制conf文件夹到new_core中

在页面中再次点击add,多次刷新可新建成功

五:数据库配置

1准备mysql连接驱动包,mysql-connector-java-5.1.29.jar,直接maven私服下载或者从自己的项目中获取,这个使用率应该是特别高的。

2找到solr-dataimporthandler-7.5.0.jar和solr-dataimporthandler-extras-7.5.0.jar 。这2个jar在solr安装目录下有,F:\solr\solr-7.5.0\dist

把这3个jar包复制到F:\solr\solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib 目录下,熟悉java的朋友其实看一眼就明白,这其实是一个标准的web项目目录。

3进入安装目录,F:\solr\solr-7.5.0\example\example-DIH\solr\db,

复制目录下conf文件夹到F:\solr\solr-7.5.0\server\solr\new_core,覆盖之前的目录.

说明其实创建core的时候,我们就复制过一次,其实大家可以一步到位,第一次就复制F:\solr\solr-7.5.0\example\example-DIH\solr\db的conf文件夹

在conf目录下,我们可以看到很多配置文件如下:

4 修改db-data-config.xml

初始化的配置文件如下,这是一个数据库连接池的配置文件,我们需要配置自己的数据库地址和查询sql。

修改成自己所需:

配置说明:

dataSource-->数据库连接,用户名密码配置

entity-->sql定义

field-->字段定义,column对应数据库字段,name对应solr的索引字段名

 

5  修改managed-schema

进入该配置文件,这个配置文件主要用于配置索引字段。我们在配置文件中增加field,要求一一对应。

注意:我们copy来的配置文件中有一些关键字已经配置了,如id,name,那就不需要重新配置field,只需要配置没有的。

如果你的表主键id不是叫id,那么你定义的field需要指定required="true",并把默认的id的required="true"属性去掉,

并把<uniqueKey>id</uniqueKey>修改成你的主键id值,否则数据导入不进去。

说明:因为只是做个基础的搜索业务,没有精细该schema文件,精益求精的小伙伴可以把冗余字段都干掉试试。

到此,配置完成,接下来我们操作导入数据。

六、数据导入

启动成功后进入http://127.0.0.1:8983/solr/#/new_core/dataimport//dataimport

或者在主界面点击Dataimport

点击Entity,我们发现有我们配置的student,勾选中

最后勾选Auto-Refresh Status,点击Excute,

导入成功后可query

表示导入成功

和我们数据库的数据是刚好对应的。

说明:solr中的索引字段名取决于你在managed-schema中如何配置定义。

另外,大家配置的时候注意,不需要进行索引或者存储的字段要配置成false,节省资源空间。

<field name="createTime" type="pdate" indexed="false" stored="true"/>

如创建时间,我们不需要进行查询索引,indexed配置成false即可。

数据清空

进入solr主页,进入Documents模块,如图所示,选择XML类型

输入xml

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

点击Submit Document,结果如下:

此时再去查询,就看到数据都已经清空。

七,增量索引

增量更新索引,顾名思义就是在原有的数据基础上进行索引更新,不会对已有的数据再进行一次索引。

发送"solr"关键字获取百度网盘的下载链接

把jar包复制放到F:\solr\solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib 目录下

修改F:\solr\solr-7.5.0\server\solr-webapp\webapp\WEB-INF

打开web.xml文件,增加监听器配置

<listener>
	 <listener-class>
	    org.apache.solr.handler.dataimport.scheduler.ApplicationListener
	 </listener-class>
   </listener>

这个监听器源码就是来自上面的jar包中,我确认过了。

增加dataimport.properties配置

增加增量导入配置文件,注意,目录!目录!目录!

这个文件在F:\solr\solr-7.5.0\server\solr\new_core\conf  有一个,但是,我们不是配置到这里!敲黑板,划重点!

我们需要在F:\solr\solr-7.5.0\server\solr 目录下,新建一个conf文件夹,注意啦,这个文件夹是我们手动新建的,如果没操作这一步,你就是操作不当。

然后在conf目录下,新建dataimport.properties 文件。

文件内容如下(以下文件来源于网络):

#################################################
#                                               #
#       dataimport scheduler properties         #
#                                               #
#################################################

#  to sync or not to sync
#  1 - active; anything else - inactive
syncEnabled=1

#  which cores to schedule
#  in a multi-core environment you can decide which cores you want syncronized
#  leave empty or comment it out if using single-core deployment
#  修改成你所使用的core
syncCores=my_core

#  solr server name or IP address
#  [defaults to localhost if empty]
server=localhost

#  solr server port
#  [defaults to 80 if empty]
#  安装solr的端口
port=8983

#  application name/context
#  [defaults to current ServletContextListener's context (app) name]
webapp=solr

#  URL params [mandatory]
#  remainder of URL
#  这里改成下面的形式,solr同步数据时请求的链接
params=/dataimport?command=delta-import&clean=false&commit=true

#  schedule interval
#  number of minutes between two runs
#  [defaults to 30 if empty]
#这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,根据项目需求修改
#  开始测试的时候为了方便看到效果,时间可以设置短一点
interval=1

#  重做索引的时间间隔,单位分钟,默认7200,即5天; 
#  为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200

#  重做索引的参数
reBuildIndexParams=/select?qt=/dataimport&command=full-import&clean=true&commit=true

#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
#  两种格式:2012-04-11 01:00:00 或者  01:00:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=01:00:00

 

 

这个文件说的挺详细的,建议存档理解。因为运行一次之后,这个文件会变成酱紫了,but,我们并不需要care了

修改db-data-config.xml配置

总算来到"终极BOSS关",我们只需要再配置2个脚本,就KO了,再坚持一下吧。

直接上配置代码吧,简单粗暴一点。

说明:

主要增加了deltaImportQuery和deltaQuery 2个属性,其实这个就是作为增量时的操作sql,solr默认读取这个key值的sql语句。

${dataimporter.delta.id}  这个东东,我没找到具体的定义在哪,但是如果你的主键id配置的不叫id,如叫studentId,那么,这个取变量就应该写成${dataimporter.delta.studentId}

${dataimporter.last_index_time}  固定写法,更新的判断条件,上一次的修改时间需要大于上一次索引的更新时间。

这个参数会自动更新在F:\solr\solr-7.5.0\server\solr\new_core\conf 下的dataimport.properties文件中

这个文件长这样,了解一下:

九重启验证

嗷嗷嗷,总算配置完成,那么赶紧重启一波,验证一把呗。

验证步骤1:重启完服务后,观察solr日志

验证步骤2:去数据库中新建或者修改数据,静静等待你配置的增量时间

数据库修改数据,查看查询结果,观察数据是否已经同步

当你看到出现出现如下日志:(日志目录-->F:\solr\solr-7.5.0\server\logs\solr.log)

2018-10-22 10:05:18.234 INFO  (Thread-17) [   ] o.a.s.h.d.DataImporter Starting Delta Import
2018-10-22 10:05:18.235 INFO  (Timer-0) [   ] o.a.s.h.d.s.BaseTimerTask [new_core] <index update process> Response message                      OK
2018-10-22 10:05:18.235 INFO  (Timer-0) [   ] o.a.s.h.d.s.BaseTimerTask [new_core] <index update process> Response code                 200
2018-10-22 10:05:18.235 INFO  (Timer-0) [   ] o.a.s.h.d.s.BaseTimerTask [new_core] <index update process> Disconnected from server              localhost
2018-10-22 10:05:18.236 INFO  (Timer-0) [   ] o.a.s.h.d.s.BaseTimerTask [new_core] <index update process> Process ended at ................ 22.10.2018 10:05:18 235

说明增量同步已经执行...

查询solr:

至此,增量同步配置完成!

八 分词

下载解压后,把ik-analyzer-solr5-5.x.jar 放到F:\solr\solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib 目录下。

修改F:\solr\solr-7.5.0\server\solr\new_core\conf 目录下的managed-schema 文件。

增加分词器的fieldType定义:

    <fieldType name="text_ik" class="solr.TextField">
		<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
		<analyzer type="query" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>

name="text_ik",分词器名称,在后面的filed定义的时候,可以直接引用。

如,type定义为"text_ik",则代表该字段将进行分词索引

<field name="studentName" type="text_ik" indexed="true" stored="true"/>

3.查看

进入solr主页,进入Analysis,输入一段汉字,选择text_ik,点击分析可以看到如下结果:

如上,说明分词成功。

中文分词器:

solr自带了一些中文分词器,比较好用的是SmartChineseAnalyzer,但是扩展性比较差不能自定义扩展中文词库,所以这里选择使用IKAnalyzer,这是第三方的一个分词器可以很好的扩展中文词库,IKAnalyzer下载后解压会有如下文件

把核心jar文件复制到solr WEB应用的lib文件夹下,如下图

把配置文件和词库等文件复制到WEB应用的classes文件夹下,如果子WEB-INF下没有这个文件夹自己创建即可,如下图:

如果想要扩展词库可以在ext.dic文件中配置自定义的中文词组,例如:诛仙这个词组,这个分词器的算法是算不出来的但是通过我们自定义词库,分词器也可以把诛仙列出关键词。

    上图是ext.dic文件中的内容,注意编辑此文件时字符编码最好是UTF-8无BOM模式,这个可以通过EditPlus等文本编辑工具设置。下面开始在Schema中应用分词器如下图:

 

 

定义了一个text_ik这个字段类型并采用Ik分词器,接下来在field元素定义式指定type=text_ik就可以把这个分词器应用在这个field中

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值