5

当我运行 /solr/dataimport?command=full-import 时,它会处理所有文档。但是,当我运行增量导入 (/solr/dataimport?command=delta-import) 时,它会正确识别更新的数据(返回“ <str name="Total Rows Fetched">1</str>”)但不处理任何数据(返回“ <str name="Total Changed Documents">0</str>”)

我的 data-config.xml 看起来像这样:

<entity name="category" pk="catID" 
query="SELECT CONCAT('c_',catID) ID, catID, catName FROM category" 
deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM category WHERE catID = '{$dataimporter.delta.catID}'" 
deltaQuery="SELECT catID FROM category WHERE catDate &gt; '${dataimporter.last_index_time}'"/>

(注意 - 我的 concat 有一个单独的原因)

为什么在增量导入获取但不处理时完整导入过程?

4

4 回答 4

5

'{$dataimporter.delta.catID}',这里catID应该是字段定义中名称属性的值。我有同样的问题,然后意识到引用的变量是字段名......我希望它有效。

于 2012-10-18T12:39:18.510 回答
2

我有同样的问题,发现 deltaImportQuery 区分大小写

将我的 id 列设为“ID”

deltaImportQuery="select id,state,name,place,city from temp where ID='${dih.delta.ID}

于 2015-04-30T16:34:11.790 回答
0

在您的情况下,增量查询工作正常,但您的增量导入查询失败。

这是因为你已经给予,

deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM category WHERE catID = '{$dataimporter.delta.catID}' "

但它应该被赋予,

deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM category WHERE catID = '${dataimporter.delta.catID}' "

于 2012-10-05T05:33:09.077 回答
0

这是因为完全导入将处理数据库中的每个文档。

增量导入仅处理自您上次导入任何类型以来已修改的文档(在您的情况下,由 catDate 字段决定)。

例如,假设您在 2012-09-09 12:15:38 执行完全导入。

接下来,您在 2012-09-10 12:15:38 执行增量导入。只有 catDate > '2012-09-09 12:15:38' 的文档才会被处理。

这个想法是 delta-import 是一种维护不断变化的索引的方法,而不必每次都进行完全导入。

于 2012-09-09T14:38:22.397 回答