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
这个配置文件很重要,它是用来记录当前时间与上一次修改时间的,通过它能够找出,那些,新添加的,修改的,或删除的记录标识,此条记录是否被删除的记录