使用 dataimporthandler 时将新文档添加到 Solr 索引
Adding new documents to the Solr index when using the dataimporthandler
我正在使用 Solr dataImportHandler 为数据库建立索引以进行搜索。增量导入计划每 5 分钟 运行 一次,以获取对数据库的更改。但是,增量导入只获取对现有项的更改,而不是新添加的项。
将新项目编入索引的好方法是什么?我是否也应该安排完全导入,如果是这样,是否有关于多久执行一次的良好实践指南? (我没能找到一个)。或者我应该使用 Solrj 将新项目添加到索引中(我正在使用 Solrj 进行实际搜索),如果是这样的话,有两个不同的东西更新 Solr 索引会有陷阱吗?还是增量导入没有获取新项目这一事实表明我的 db-data-config 文件做错了什么? (这不足为奇)。
如果有人对这类事情有任何经验,那么很高兴知道什么对您有用。
编辑添加:我的 db-data-config 文件中的查询如下所示:
query="select * from t_monkeys where is_deleted=0"
deltaQuery="select monkey_id from t_monkeys where last_changed_dt > '${dataimporter.last_index_time}'"
deltaImportQuery="select * from t_monkeys where concat('monkey-',monkey_id) = '${dataimporter.delta.monkey_id}'
如果您正在为增量查询使用时间字段(例如 'lastModified'),请确保在创建新行时也设置了该字段。
例如,如果您的 table 有 4 列 id, name, updatedOn, addedOn 并且您使用 updatedOn您的 data-config.xml 文件用于识别已更改的行,然后确保您的 updatedOn 对于新行不为空。
我正在使用 Solr dataImportHandler 为数据库建立索引以进行搜索。增量导入计划每 5 分钟 运行 一次,以获取对数据库的更改。但是,增量导入只获取对现有项的更改,而不是新添加的项。
将新项目编入索引的好方法是什么?我是否也应该安排完全导入,如果是这样,是否有关于多久执行一次的良好实践指南? (我没能找到一个)。或者我应该使用 Solrj 将新项目添加到索引中(我正在使用 Solrj 进行实际搜索),如果是这样的话,有两个不同的东西更新 Solr 索引会有陷阱吗?还是增量导入没有获取新项目这一事实表明我的 db-data-config 文件做错了什么? (这不足为奇)。
如果有人对这类事情有任何经验,那么很高兴知道什么对您有用。
编辑添加:我的 db-data-config 文件中的查询如下所示:
query="select * from t_monkeys where is_deleted=0"
deltaQuery="select monkey_id from t_monkeys where last_changed_dt > '${dataimporter.last_index_time}'"
deltaImportQuery="select * from t_monkeys where concat('monkey-',monkey_id) = '${dataimporter.delta.monkey_id}'
如果您正在为增量查询使用时间字段(例如 'lastModified'),请确保在创建新行时也设置了该字段。
例如,如果您的 table 有 4 列 id, name, updatedOn, addedOn 并且您使用 updatedOn您的 data-config.xml 文件用于识别已更改的行,然后确保您的 updatedOn 对于新行不为空。