solr 的全量更新与增量更新
- solr 的增量更新
1.首先要弄懂几个必要的属性,以及数据库建表事项,和dataimporter.properties 、data-config.xml里面的数据
2.数据库配置注意事项
1.如果只涉及添加,与修改业务,那么数据库里只需额外有一个timpstamp字段
就可以了,默认值为当前系统时间,CURRENT_TIMESTAMP
2.如果还涉及删除业务,那么数据里就需额外再多添加一个字段isdelete,int类型的
用0,1来标识,此条记录是否被删除
3.dataimporter.properties
这个配置文件很重要,它是用来记录当前时间与上一次修改时间的,通过它能够找出,那些,新添加的,修改的,或删除的记录标识,此条记录是否被删除的记录
4.增量更新就是在全量更新的基础上加上一些配置,配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!--数据源-->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.2.10:3306/xtjkqyfw"
user="root"
password="Biaopu8888"/>
<document>
<entity name="solrTest"
query="SELECT fid,ftime,fcontent,ftitle,flastupdatetime FROM solrTest where flag = '0'"
deltaImportQuery = "SELECT fid,ftime,fcontent,ftitle,flastupdatetime FROM solrTest where fid = '${dataimporter.delta.fid}'"
deltaQuery = "SELECT fid FROM solrTest where flastupdatetime > '${dataimporter.last_index_time}' and flag = '0'"
deletedPkQuery = "SELECT fid FROM solrTest where flag = '1'"
>
<!--查询的数据和数据库索引意义对应column 是查询的字段name 是solr索引对应的字段-->
<field column="fid" name="fid"/>
<field column="ftitle" name="ftitle"/>
<field column="fcontent" name="fcontent"/>
<field column="flastupdatetime" name="flastupdatetime"/>
<field column="ftime" name="ftime"/>
</entity>
</document>
</dataConfig>
5.通过后台管理手动增量更新和通过浏览器手动更新
2.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" ?>3.修改core/conf 目录下 managed-schema.xml 的文件,新增需要索引的列,示例:
<field name="fid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="fpic" type="string" indexed="true" stored="true" multiValued="false" />
<field name="ftitle" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="fauthor" type="string" indexed="true" stored="true" multiValued="false" />
<field name="ftime" type="string" indexed="true" stored="true" multiValued="false" />
<field name="fdesc" type="string" indexed="true" stored="true" multiValued="false" />
<field name="fcontent" type="string" indexed="true" stored="true" multiValued="false" />
<field name="flastupdatetime" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />