【发布时间】:2011-09-15 22:07:04
【问题描述】:
是否可以在用于 solr 索引的 db-data-config.xml 中放入更新 SQL 命令?
我需要将上次成功的 solr 索引日期戳保存在数据库列中。如果我可以在 solr db-data-config.xml 文件中包含一个更新 SQL 命令,我就可以做到这一点。
是否有替代此要求的方法?
【问题讨论】:
是否可以在用于 solr 索引的 db-data-config.xml 中放入更新 SQL 命令?
我需要将上次成功的 solr 索引日期戳保存在数据库列中。如果我可以在 solr db-data-config.xml 文件中包含一个更新 SQL 命令,我就可以做到这一点。
是否有替代此要求的方法?
【问题讨论】:
您不能直接在 db-data-config.xml 中执行此操作。你可以做的是使用EventListener。为此,您必须编写一个继承 EventListner 接口的类并在:'onEvent' 上执行更新命令。如果您可以访问上下文参数,那么您可以使其通用并从配置文件中读取您的命令。
为此创建一个 EventListner:
package se;
import org.apache.solr.handler.dataimport.Context;
import org.apache.solr.handler.dataimport.EventListener;
public class DataImportEndEventListner implements EventListener {
/* (non-Javadoc)
* @see org.apache.solr.handler.dataimport.EventListener#onEvent(org.apache.solr.handler.dataimport.Context)
*/
@Override
public void onEvent(Context ctx) {
//read config
ctx.getRequestParameters().get("parameter-name").toString());
try
{
// Do what you want
}
catch(Exception ex)
{
// handle error
}
}
}
并在 db-data-config.xml 中注册:
<dataConfig>
<document onImportEnd="se.DataImportEndEventListner">
....
</document>
</dataConfig>
【讨论】: