安装部署、中文分词、域创建等内容请看上一篇
Windows部署Solr全文检索+中文分词_会飞的哈士奇的博客-CSDN博客_solr 文件检索
增量更新
打开你的自定义的域(我的叫shopCore) 下的conf文件夹, 编辑data-config.xml文件
路径为 : solr-8.10.1\server\solr\shopCore\conf\data-config.xml
query? 全部数据 deltaImportQuery? 更新数据 deltaQuery? 需要更新的数据(只能返回ID) deletedPkQuery? 需要删除的数据(只能返回ID)
${dataimporter.last_index_time} 为内部变量 (最后一次更新索引的时间)
${dih.delta.goods_id} 为内部变量(索引数据对象)
gmt_modified(自己定义的修改或新增时候的时间记录) 、is_delete(数据的伪删除状态字段)
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource name = "source1" type = "JdbcDataSource"
driver = "com.mysql.cj.jdbc.Driver"
url = "jdbc:mysql://192.168.0.151:3306/db_card?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false"
user="root"
password = "root"
encoding="UTF-8"/>
<document>
<entity name = "svc_shop_goods" processor = "SqlEntityProcessor" pk="goods_id"
query = "SELECT goods_id, goods_name, goods_price FROM svc_shop_goods WHERE is_delete = 0"
deltaImportQuery = "SELECT goods_id, goods_name, goods_price FROM svc_shop_goods WHERE is_delete = 0 AND goods_id = '${dih.delta.shop_goods_id}'
deltaQuery="SELECT goods_id FROM svc_shop_goods DATE_ADD(gmt_modified, INTERVAL -8 HOUR) > '${dataimporter.last_index_time}' AND is_delete = 0"
deletedPkQuery = "SELECT goods_id FROM svc_shop_goods WHERE is_delete = '1'" >
<field name = "id" column = "shop_goods_id"/>
<field name = "goods_name" column = "shop_goods_name"/>
<field name = "goods_price" column = "shop_goods_price"/>
</entity>
</document>
</dataConfig>
因为Solr的时区是中时区,而我的系统是东八区,因此在时间比较的时候我将自己数据库的数据小时减去了8小时
增量更新的执行顺序说明
?定时增量更新
下载定时增量更新jar包
下载地址 : Solr定时更新Solr定时更新-Java文档类资源-CSDN下载
1. 将jar包放入solr-8.10.1\server\solr-webapp\webapp\WEB-INF\lib路径下
2. 修改solr-8.10.1\server\solr-webapp\webapp\WEB-INF\web.xml的配置
<listener>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
在 solr-8.10.1\server\solr下手动创建conf文件夹, 将dataimport.properties(定时执行的配置文件)放入此文件夹下
配置文件中内容如下
#################################################
# #
# dataimport scheduler properties #
# #
#################################################
# 同步开关 1:同步
syncEnabled=1
# 要同步的核心,多个用逗号隔开
syncCores=shopCore
# Solr服务器的域名或者IP地址
# 如果为空则走localhost
server=localhost
# Solr服务端口
# 如果为空则走80端口
port=8983
# application name/context
# [defaults to current ServletContextListener's context (app) name]
webapp=solr
# URL参数[必需]
# URL的剩余部分
params=/dataimport?command=delta-import&clean=false&commit=true
# 计划时间间隔
# 两次运行之间的分钟数
# [如果为空,则默认为30]
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 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00
?启动 : ./solr.cmd start
?关闭 : ./solr.cmd stop -all
重启Solr进行测试一下
|