认知solr 的全量更新与增量更新

本文详细介绍了如何在Solr中实现全量和增量更新,包括配置solrconfig.xml和data-config.xml,以及数据库表结构设计。通过具体步骤和示例,展示了如何设置增量更新的关键参数,如deltaQuery,以及如何处理数据的添加、修改和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

solr 的全量更新与增量更新

全量更新

1.core/conf 目录下的 solrconfig.xml,新增如下配置

<!--添加如下配置 增加resultHandler配置  -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults"> 
    <str name="config">data-config.xml</str> 
    </lst> 
</requestHandler>

2 在core/conf 目录下的新建 data-config.xml 文件,新增如下配置

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig> 
    <!--数据源-->
   <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
		url="jdbc:mysql://127.0.0.1:3306/txws158"
		user="root"
		password="111111"/>
    <document>
        <entity name="solrTest" query="
			   SELECT 
				p.id,
				p.name,
				p.price,
				m.name merchant,
				c1.shortname city,
				c2.shortname province
			   FROM product p
			   LEFT JOIN merchant m ON p.merchant_id = m.id
			   LEFT JOIN city c1 ON m.city_id = c1.id
			   LEFT JOIN city c2 ON c1.pid = c2.id;
			  "
                deltaQuery="
					SELECT 
				  p.id,
				  p.name,
				  p.price,
				  m.name merchant,
				  c1.shortname city,
				  c2.shortname province
				 FROM product p
				 LEFT JOIN merchant m ON p.merchant_id = m.id
				 LEFT JOIN city c1 ON m.city_id = c1.id
				 LEFT JOIN city c2 ON c1.pid = c2.id;
				">
			  <field column="p.id" name="id"/>
			<field column="p.name" name="product_name"/>
			<field column="p.price" name="product_price"/>
			<field column="c.name" name="city_name"/>
			<field column="m.name" name="merchant_name"/>
           
        </entity>
    </document>
</dataConfig>

3.修改core/conf 目录下 managed-schema.xml 的文件,新增需要索引的列,示例:

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
   <field name="name" type="text_general" indexed="true" stored="true"/>
   <field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
   <field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
   <field name="features" type="text_general" indexed="true" stored="true" multiValued="true"/>
   <field name="includes" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
   <field name="weight" type="pfloat" indexed="true" stored="true"/>
   <field name="price"  type="pfloat" indexed="true" stored="true"/>
   <field name="popularity" type="pint" indexed="true" stored="true" />
   <field name="inStock" type="boolean" indexed="true" stored="true" />

   <field name="store" type="location" indexed="true" stored="true"/>

4.进入solr 的后台管理,进行全量更新

增量更新

在这里插入图片描述

2. solr 的增量更新

**1.首先要弄懂几个必要的属性,以及数据库建表事项,和dataimporter.properties 、data-config.xml里面的数据

<!--  transformer 格式转化:HTMLStripTransformer 索引中忽略HTML标签   --->
  <!--  query:查询数据库表符合记录数据   --->
  <!--  deltaQuery:增量索引查询主键ID    --->    注意这个只能返回ID字段
  <!--  deltaImportQuery:增量索引查询导入数据  --->
  <!--  deletedPkQuery:增量索引删除主键ID查询  ---> 注意这个只能返回ID字段

2.数据库配置注意事项
1.如果只涉及添加,与修改业务,那么数据库里只需额外有一个timpstamp字段
就可以了,默认值为当前系统时间,CURRENT_TIMESTAMP
2.如果还涉及删除业务,那么数据里就需额外再多添加一个字段isdelete,int类型的
用0,1来标识,此条记录是否被删除
**
2.数据库配置注意事项
1.如果只涉及添加,与修改业务,那么数据库里只需额外有一个timpstamp字段
就可以了,默认值为当前系统时间,CURRENT_TIMESTAMP
2.如果还涉及删除业务,那么数据里就需额外再多添加一个字段isdelete,int类型的
用0,1来标识,此条记录是否被删除
3.dataimporter.properties
这个配置文件很重要,它是用来记录当前时间与上一次修改时间的,通过它能够找出,那些,新添加的,修改的,或删除的记录标识,此条记录是否被删除的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值