我是SOLR的新手,正在对这项技术进行一些研究。我现在有一个关于delta-import函数的问题所以我查看了SO并找到了这个:Solr DataImportHandler delta import。答案中提到了一个字段[date_update]
,它似乎是记录的时间戳。
我的问题是:[date_update]是否在创建记录时存储在表中的时间戳?如果是这样,如果数据库服务器的日期与安装SOLR的服务器不完全同步,是否会产生问题?如果Solr服务器时间超过SQLServer时间,则可能会遗漏一些记录。
答案 0 :(得分:1)
此解决方案可能会留下一些记录(如果未正确配置服务器)。
我正在使用类似的解决方案,但有一些修改。当项目以任何方式更改时,DB中的项目都会更新时间戳字段。
在更新索引之前,我从Solr获取最后一个时间戳(存储此字段),然后我将索引查询中的时间戳传递给Solr(/?command = full-import& clean = false& timestamp = .. )。
Using query attribute for both full and delta import
那时Solr机器上的时间与数据库机器上的时间无关。但是在我的情况下,索引完成后我正在使用DB进行快速验证(由于某种原因检查是否有任何缺失,或者必须删除某些内容)。
使用dataimporter.last_index_time时,您也可以使用这种验证。
答案 1 :(得分:0)
您可以使用FlexCDC,它监视MySQL二进制日志以查找表数据:
http://www.mysqlperformanceblog.com/2011/03/25/using-flexviews-part-two-change-data-capture/