您的位置:首页 > 其它

(八) 通过jdbc对对solr进行数据的增量导入

2012-10-29 12:12 381 查看
接着上一节的内容,假如我们从mysql中导入进solr中的数据量比较大,所耗时比较长,如果每次都是进行完全导入,肯定是不好的做法,因此可以采取增量导入的方式,solr的相关配置如下所示:

在 schema.xml的域信息定义如下:

<field name="id"     type="string"   indexed="true"  stored="true"  required="true"/>
<field name="title" type="text" indexed="true" stored="true"/>
<field name="catname" type="string" stored="true"/>


solrconfig.xml

<requestHandler name="/import" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>


db-data-config.xml 的配置如下:

<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/blog" user="root" password="admin"/>
<document>
<entity name="article" query="select id,title,catid from article" deltaImportQuery="select id,title,catid from article where id='${dataimporter.delta.id}'" deltaQuery="select id from article where cdate> '${dataimporter.last_index_time}'">
<field column="id" name="id" />
<field column="title" name="title" />
<field column="title" name="suggest"/>
<entity name="category" query="select catname from category where id=${article.catid}">
<field column="catname" name="catname"/>
</entity>
</entity>
</document>
</dataConfig>


与上一节相比,db-data-config.xml 文件的配置有所变化:

在最外层的entity节点里面新增了两个属性节点,deltaImportQuery 与deltaQuery, deltaImportQuery使用deltaQuery返回的文章id作为查询条件,然后进行增量导入。

dataimporter.last_index_time :存储在文件import.properties 中

#Sat Jun 16 19:30:20 CST 2012
last_index_time=2012-06-16 19\:30\:19
article.last_index_time=2012-06-16 19\:30\:19


dataimporter.delta.id:deltaImportQuery 返回的id
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: