提示:
需要准备对应mysql.jar包
配置
一下操作都是基于测试成功的 solr7.7.3版本 单表的一个操作
0、
solr 解压
启动
.\solr start
停止
.\solr stop -all
访问http://localhost:8983/
1、添加jar
分别是solr连接mysql的Jar,一个是mysql驱动Jar
进入solr-7.7.3\dist,将solr-dataimporthandler-7.7.3.jar,solr-dataimporthandler-extras-7.7.3.jar拷贝到solr\server\solr-webapp\webapp\WEB-INF\lib目录下
将mysql-connector-java-5.0.8-bin.jar拷贝到\solr\server\lib目录下
2、进入solr\server\solr目录创建核心core目录
创建的就是这个
进入bin目录用 .\solr create -c hotel 创建核心core目录
3、进入\server\solr\创建核心core目录\conf
修改solrconfig.xml文件,新增:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
4、新增data-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/ly?serverTimezone=Asia/Shanghai" user="root" password="2418870649"/>
<document>
<entity name="ly_article" pk="wid"
query = "select wid, articlename,artuledata from ly_article"
deltaQuery="select wid from ly_article where artuledata > '${dih.last_index_time}+8'"
deletedPkQuery="select wid from ly_article where isdelete = 1"
deltaImportQuery = "select wid, articlename,artuledata from ly_article where wid='${dih.delta.wid}'"
>
<field column="wid" name="wid" />
<field column="articlename" name="articlename" />
<field column="artuledata" name="artuledata" />
</entity>
</document>
</dataConfig>
说明:artuledata 是时间字段 datetime (必须有) isdelete 删除标识 int(必须有)
属性
column:SQL 查询的列名 或者说是 数据库中的字段
Name:solr 域 field 中的域名 或者说是 name就是solr中显示的名称。
query 是获取全部数据的SQL
deltaImportQuery 是获取增量数据时使用的SQL
deltaQuery 是获取pk的SQL
parentDeltaQuery 是获取父Entity的pk的SQL
5、 修改managed-schema文件
配置 field 域(这里的name 对应data-config.xml中的name):
某个字段需要模糊查询(中文分词),要将其类型改为type="solr_cnAnalyzer"
<!-- 业务域
name: 域名称
type: 域的数据类型
indexed: 是否创建索引
stored: 是否存储
required: 是否必须的域
-->
删除原本有的field (原本的在文件最上面),不要删除错了 name="_version_" name="_root_" name="_text_" 不要删除 不要删除 不要删除
<field name="wid" type="string" uninvertible="true" indexed="true" stored="true"/>
<field name="articlename" type="string" uninvertible="true" indexed="true" stored="true"/>
<field name="artuledata" type="string" uninvertible="true" indexed="true" stored="true"/>
<uniqueKey>wid</uniqueKey> 这个改成对应的主键id
添加分词器
<!--配置中文分词器使用的field-->
<field name="ik" type="text_ik" indexed="true" stored="true"/><!-- 然后就显示 ik这个名字 -->
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
<analyzer type="query" useSmart="true"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
分词器下载下来后
把这两个jar文件复制到solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib中
然后在solr-7.4.0\server\solr-webapp\webapp\WEB-INF\目录下新建一个classes目录,把下面三个文件复制进去
6、创建dataimport.properties(定时增量更新索引)
在\server\solr\创建核心core目录\conf 也会有一个一样的,但是,我们不是配置到这里
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
#修改成你所使用的core
syncCores=article
#这个一般都是localhost不会变
server=localhost
# solr 服务器端口 如果为空 默认为80
port=8983
# application name/context
# [defaults to current ServletContextListener's context (app) name]
webapp=solr
# URL params [mandatory]
# remainder of URL
params=/dataimport?command=delta-import&clean=false&commit=true
# schedule interval
# number of minutes between two runs
# [defaults to 30 if empty]
#这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,如果为空默认30分钟
interval=1
# 重做索引的时间间隔,单位分钟,默认7200,即1天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200
# 重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
# 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
# 两种格式:2012-04-11 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00
7、找到web.xml (增量更新监听器)
F:\solr-7.7.3\server\solr-webapp\webapp\WEB-INF 添加
<listener>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
把下载的jar添加到(apache-solr-dataimportscheduler-1.4.jar)
把jar包复制放到F:\solr\solr-7.5.0\server\solr-webapp\webapp\WEB-INF\lib 目录下
8、导入数据
全部导入
增量导入 ,只导入新增数据
9、清空数据
<delete><query>*:*</query></delete>
<commit/>
命令
启动
.\solr start
.\solr.cmd start
停止
.\solr stop -all
.\solr stop.cmd -all
进入solr\server\solr目录创建核心core目录
.\solr create -c hotel # (hotel名称,自定义)命令创建一个hotel