我相信您的用例是您有一个带有自动增量主键的仅附加表。Solr DIH 似乎不支持您想要的。(尽管尝试询问 Solr 用户邮件列表。)
但是还有另一种方法,您可以尝试使用 Solr Wiki DataImportHandlerDeltaQueryViaFullImport中给出的示例中的想法。如果您可以将id
Solr 索引中的最大值作为参数传递给导入请求,那么您可以在数据导入查询中使用它。
为此,您需要首先向 Solr 发出查询以获取最大的 id:
q=*:*&sort=id desc&rows=1&fl=id
打电话给这个MAXID
。然后,当您调用完全导入时,传递此 ID,例如:
/dataimport?command=full-import&id=MAXID
您可以使用${dataimporter.request.id}
. 在您的 data-config.xml 中,您的查询应如下所示:
<entity name="item"
pk="id"
query="SELECT id, name FROM item
WHERE id > '${dataimporter.request.id}'">
当然,要对所有文档进行完整的重新索引,您将通过id=0
,假设 0 是您获得的最小键值。
我自己还没有尝试过,但是您可以进行实验并说出您的发现。
(说了这么多,显然很容易将时间戳列添加到您的表中。如果您使用的是 MySQL,您可以保留时间戳列,DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
甚至不必费心自己更新它。)