2016-07-09 42 views
0

有没有办法继续从我们留在Apache Solr实现使用数据导入处理程序的Apache Solr的索引SQL数据

例子,其中一个大的SQL数据集的索引: 像我解压后在1000行停止索引一个数据和处理完成我停止了我的Solr并且索引被更新了,现在我想从那里继续。

如何做到这一点?

这是我data-config.xml

<entity name="id" query="select movie_id as 'id',title, genres from movies;"> 
    <field column="title" name="movie_name"/> 
    <field column="genres" name="genres"/> 
    <entity name="links_id" query="select imdb_id,tmdb_id from links where movie_id=${id.id};"> 
     <field name="imdb_id" column="imdb_id" /> 
     <field name="tmdb_id" column="tmdb_id" /> 
    </entity> 
    <entity name="movie_rating" query="select avg(rating),count(*) from ratings where movie_id=${id.id};"> 
     <field column="avg(rating)" name="avg_rating"/> 
     <field column="count(*)" name="total_users_rated"/> 
    </entity> 
</entity> 

回答

0

使用在SQL中的LIMIT语句进行DIH配置。在Solr中没有使用automagic的方法,因为Solr无法知道索引了多少行,以及SQL数据库在重新启动索引过程之间是否发生了变化。

当调用完全导入并在配置文件中使用${}语法引用该值(start_at=1000或类似内容)时,您可能也可以通过URL向导入过程提交参数。但是对于一次或两次,只需使用DIH配置文件中的硬编码值即可。

+0

其实我以为这样做,但问题是,如果我将开始重新索引完全导入它将删除以前的索引文件。 –

+0

您可以使用deltaImport提供替代查询 - 但更好的是,在URL中添加'clean = false':clean:(默认为'true')。在索引开始之前告诉是否清理索引 – MatsLindh